Javascript anonymous function call
本问题已经有最佳答案,请猛点这里访问。
我在阅读Twitter上的JS源代码时,发现了调用匿名函数的奇怪方式:
1 2 3 | !function( $ ) { ... }( window.jQuery ); |
…这是可行的!:)
很明显,这是:
1 | function ( $ ) { ... } ( window.jQuery ) |
不工作(语法错误),但此错误正确:
1 | (function ( $ ) { .... })( window.jQuery ) |
有人能解释一下这种魔力吗(为什么用
在语句位置满足关键字
当关键字在表达式位置满足时(即不是语句中的第一个标记,在您的示例中,
将声明括在括号内的做法相同,但比在声明前面加上
1 2 3 | (function () { ... }()); |
第二种形式是声明。
当表达式对函数进行计算时,可以使用
另一种(可能更容易理解)实现保存相同效果的方法是使用另一组括号:
1 | ( function(x) { body; } )(arg); |
通过将函数放在圆括号内,可以再次将其转换为表达式,表达式的计算结果为函数。使用
这听起来像是一个javascript语法错误:
命名函数可以是一个语句,但是匿名函数只把它当作一个表达式。
赞成的意见:你可以做
反对的论点:你不能这样做。
但是为什么人们不调用匿名函数就想定义它呢?所以这个骗局不是真正的问题。
至于感叹号,那不是魔法。它将结果转换为真/假。
您的问题可能是您的匿名函数中有一个错误。