我在读In JavaScript, what is the advantage of !function(){}() over (function () {})()?的时候突然想到了,为什么要用:
(function(){})()或!function(){}(),而不仅仅是function(){}()
有什么特别的原因吗?
发布于 2011-09-29 18:11:55
这取决于你写这篇文章的地方。function(){}()本身将生成语法错误,因为它被评估为函数声明和那些需要名称的函数。
通过使用括号或not运算符,可以强制将其解释为不需要名称的函数表达式。
如果它无论如何都会被视为表达式,可以省略括号或运算符。
发布于 2011-09-29 18:30:13
我猜你是在问为什么要使用:
var fn = (function(){}());对比:
var fn = function(){}();对我来说,简单的答案是,RHS上的函数通常很长,直到我到达底部,看到闭合的(),我才意识到我一直在读取函数表达式,而不是函数赋值。
完整的解释在Peter Michaux的An Important Pair of Parens中。
发布于 2011-09-29 18:57:40
对RobG的回答稍有不同。
许多脚本将整个程序包含在一个函数中,以确保适当的作用域。然后使用末尾的双括号立即运行此函数。但是,这与定义可以在页面中使用但最初不能运行的函数的程序略有不同。
这两个场景之间唯一的区别是最后两个字符(添加了双括号)。因为这些可能是非常长的程序,所以开头的括号表示“这将立即运行”。
程序需要运行吗?不是的。这对查看代码并试图理解它的人有帮助吗?是。
https://stackoverflow.com/questions/7595712
复制相似问题