我正在阅读 Twitter 上的 JS 源代码——在提高我的 JS 知识库的过程中,当我遇到了调用匿名函数的奇怪方式时:
!function( $ ) {
...
}( window.jQuery );
...这有效! :)
对于每个人来说,这是显而易见的:
function ( $ ) { ... } ( window.jQuery )
不起作用(语法错误),而这是正确的:
(function ( $ ) { .... })( window.jQuery )
谁能解释一下这个魔法(为什么是这样?!function
works)?
当关键字function
在语句位置(作为语句中的第一个标记)满足,则函数声明表示为函数语句。函数语句被提升到作用域的顶部,不能立即调用,并且必须有一个名称。
当关键字在表达式位置中遇到时(即,在您的示例中,不是作为语句中的第一个标记)!
是第一个标记),函数声明表示为函数表达式,它可以是匿名的并返回新创建的函数的值。由于它返回新创建函数的值,因此您可以通过在其后添加括号来立即调用它。
将声明括在括号内的作用相同,但比在其前面加上前缀更常见!
or +
:
(function () {
...
})();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)