即时函数:
目前我们已经讨论了匿名函数在回调时的应用。接下来,我们来看看匿名函数的另一种应用实例 --- javascript即时函数:
比如:
( function(){ alert(‘her‘); } )()
虽然这种语法看上去有点吓人,但其实非常的简单 --- 我们只需将匿名函数的定义放进一对括号中,然后外面再紧跟一对括号即可。
其中第二对括号起到了 ‘立即调用’ 的作用,同时她也是我们向匿名函数传递参数的地方。
( function(a){ alert( ‘her is‘ + a + ‘!‘ ) } )(‘beauty‘);
另外,您也可以将第一对括号闭合与第二对括号之后,这两种做法都有效:
// 第一种 (function(){ alert(); })() // 第二种 (function(){ alert() }())
使用即时函数(自调函数)的好处是不会产生任何全局变量。当然,缺点也是显而易见的,这种函数是无法重复执行的(除非您将她放入某个循环中,或其他函数中)。这个特性也使得即时函数非常适合于执行一些一次性的初始化任务。
如果有需要的话,即时函数也能带有返回值,虽然并不常见:
var her = (function(){ return ‘She was really beautiful‘; })();
当然在这个例子中,将整个函数表达式用括号包起来是不必要的,我们只需在函数最后使用一对括号来执行这个函数即可。因此也可以改为:
var her = function(){ return ‘She was really beautiful‘; }();
但这种写法可读性差了些,不读到最后我们不会知道这是个即时函数还是其他的神马。
时间: 2024-12-27 10:44:47