奇怪的匿名javascript函数调用
这个问题在这里已经有了答案:
你说得对,它是一个立即调用函数表达式(IIFE)
你可以重写
!+-+-+!+-+-+!+-+-+!+-+-+!+-+-+!+-+-+!+-+-+!+-+-+!
function(d, w){
...
}(document, window);
至
!function() {
...
}()
它仍然有效。 这是因为!
是一元运算符(就像+
, -
和~
- 见https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Expressions_and_Operators)。 在一个一元运算符之后,预期表达式(并且被评估!)。 表达式可以是一个函数调用。
然而
!function() {
...
}()
只是另一个表达式,所以你可以在它之前放置另一个一元运算符:
+!function() {
...
}()
你可以按照你的意愿继续这种模式。
注意:以这种方式调用匿名函数会忽略该函数的返回值。 所以只有使用这个,如果你对返回值不感兴趣。
编辑:添加了一个很好的参考http://benalman.com/news/2010/11/immediately-invoked-function-expression/,达夫在他的答案中提到。
诀窍实际上是单身!
那里的操作员(整个第一行实际上做同样的事情)。 这也会起作用:
!function(d, w){
...
}(document, window);
一如既往,我可以推荐Ben Almans关于立即调用函数表达式的伟大文章
链接地址: http://www.djcxy.com/p/17425.html