首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么使用(function(){})()或!function(){}()?

为什么使用(function(){})()或!function(){}()?
EN

Stack Overflow用户
提问于 2011-09-29 18:06:08
回答 3查看 1.3K关注 0票数 4

我在读In JavaScript, what is the advantage of !function(){}() over (function () {})()?的时候突然想到了,为什么要用:

(function(){})()!function(){}(),而不仅仅是function(){}()

有什么特别的原因吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-29 18:11:55

这取决于你写这篇文章的地方。function(){}()本身将生成语法错误,因为它被评估为函数声明和那些需要名称的函数。

通过使用括号或not运算符,可以强制将其解释为不需要名称的函数表达式

如果它无论如何都会被视为表达式,可以省略括号或运算符。

票数 2
EN

Stack Overflow用户

发布于 2011-09-29 18:30:13

我猜你是在问为什么要使用:

代码语言:javascript
复制
var fn = (function(){}());

对比:

代码语言:javascript
复制
var fn = function(){}();

对我来说,简单的答案是,RHS上的函数通常很长,直到我到达底部,看到闭合的(),我才意识到我一直在读取函数表达式,而不是函数赋值。

完整的解释在Peter Michaux的An Important Pair of Parens中。

票数 2
EN

Stack Overflow用户

发布于 2011-09-29 18:57:40

对RobG的回答稍有不同。

许多脚本将整个程序包含在一个函数中,以确保适当的作用域。然后使用末尾的双括号立即运行此函数。但是,这与定义可以在页面中使用但最初不能运行的函数的程序略有不同。

这两个场景之间唯一的区别是最后两个字符(添加了双括号)。因为这些可能是非常长的程序,所以开头的括号表示“这将立即运行”。

程序需要运行吗?不是的。这对查看代码并试图理解它的人有帮助吗?是。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7595712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档