为了账号安全,请及时绑定邮箱和手机立即绑定

立即函数调用语法

立即函数调用语法

有只小跳蛙 2019-08-06 15:59:12
立即函数调用语法有一个JSLint选项,实际上是一个好的部分,“[需要]围绕立即调用的parens,”意味着构造(function () {   // ...})();反而需要写成(function () {   // ...}());我的问题是 - 任何人都可以解释为什么第二种形式可能被认为更好?它更有弹性吗?不容易出错?它比第一种形式有什么优势?自从提出这个问题以来,我逐渐理解了在函数值和函数值之间进行清晰视觉区分的重要性。考虑立即调用的结果是赋值表达式的右侧的情况:var someVar = (function () {   // ...}());虽然最外面的括号在语法上是不必要的,但是左括号给出了一个预先指示,即所分配的值不是函数本身,而是调用函数的结果。这类似于Crockford关于构造函数大写的建议 - 它可以作为任何查看源代码的人的视觉提示。
查看完整描述

3 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

当要立即调用函数时,整个调用表达式应该包含在parens中,以便很明显生成的值是函数的结果而不是函数本身。

因此,基本上,他认为它更清楚地区分了函数值和函数值。所以,这是一个风格问题,而不是代码本身的实质性差异。

更新参考,旧PPT不再存在


查看完整回答
反对 回复 2019-08-06
?
www说

TA贡献1775条经验 获得超8个赞

立即调用匿名函数将其包装在parens中,因为:

  1. 它们是函数表达式,而将parens排除会导致它被解释为函数声明,这是一个语法错误。

  2. 函数表达式不能以单词function开头。

  3. 将函数表达式赋给变量时,不返回函数本身,返回函数的返回值因此,parens评估其中的内容并产生价值。当函数执行时,尾随的parens ..}()导致函数立即执行。


查看完整回答
反对 回复 2019-08-06
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

或者,使用:

void function () {...} ()


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 328 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信