Javascript 匿名函数调用

标签 javascript anonymous-function

<分区>

我正在从 Twitter 上阅读 JS 源代码 — 在提高我的 JS 知识库的过程中,当我遇到调用匿名函数的奇怪方式时:

!function( $ ) {
    ...
}( window.jQuery );

... 这行得通! :)

这对每个人来说都是显而易见的:

function ( $ ) { ... } ( window.jQuery )

不起作用(语法错误),而这个是正确的:

(function ( $ ) { .... })( window.jQuery )

谁能解释一下这个魔法(为什么 case with !function 有效)?

最佳答案

当关键字function 出现在语句位置(作为语句中的第一个标记)时,函数声明表示为函数语句。函数语句被提升到范围的顶部,不能立即调用并且必须有一个名称。

当在表达式位置遇到关键字时(即不是语句中的第一个标记,在您的示例中 ! 是第一个标记),函数声明表示为 函数表达式,它可以是匿名的并返回新创建的函数的值。由于它返回新创建的函数的值,您可以通过在它后面添加括号来立即调用它。

将声明包裹在括号内的作用相同,但比使用 !+ 前缀更常见:

(function () {
    ...
})();

关于Javascript 匿名函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9091289/

相关文章:

javascript - 匿名函数作为回调

javascript - 如何在匿名函数中不循环地执行从1到10的数字?

javascript - div 向相反方向滚动

javascript - 如何使用 jQuery 激活按钮?

javascript - jquery输入类型图片点击事件

JavaScript:将匿名函数分配给变量时,不传递函数返回值,而是将函数作为字符串传递

matlab - 函数句柄内的逻辑短路

c# - C# 中类似 JavaScript 的匿名函数

javascript - Twitter Bootstrap 风格默认 JS 警报

java - Pulpcore 和 Javascript 到 Java Applet 的通信