javascript - (函数(){}) vs 函数(){}();

标签 javascript variable-assignment anonymous-function iife

考虑以下两个示例:

第一:

var x = (function(){  return 786;  }());

第二:

var y = function(){  return 786;  }();

我知道我们不能使用function(){ return 786; }();直接作为 anoomymus 自调用函数,但现在因为我将它分配给变量 x我可以使用这个功能。所以,

  • 变量x的行为结果有什么不同吗?在第一个第二个方法中?

最佳答案

没有。不会有什么区别。

将函数括在括号中会将它们从函数声明转换为表达式,并且可以在有效的表达式上运行它自己的。

var x = (function(){  return 786;  }());

这里,括号中的匿名函数是一个表达式,它执行该函数并返回786,并将其分配给var x。由于匿名函数是一个有效的表达式,因此它也可以单独运行。

var y = function(){  return 786;  }();

这里,完整的语句是一个赋值表达式,因此,它被执行并将值786存储到var y

如需进一步阅读,请查看以下链接:

/questions/3384504/location-of-parenthesis-for-auto-executing-anonymous-javascript-functions

http://kangax.github.io/nfe/#function-statements

关于javascript - (函数(){}) vs 函数(){}();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40488429/

相关文章:

javascript - jQuery checkerBoard 调整棋盘尺寸

python - 来自 python 字典的多个赋值

c - 根据 strlen,在 fgets 调用后写入 char 数组会导致它为空

javascript - 在对象上调用匿名函数

scala - Scala 如何实现从表达式中返回?

javascript - 如何使 Node.js MongoDB 遵循对象引用?

javascript - 将 Prop 从一个组件传递到另一个组件时出错 - 使用 typescript 进行 react 时反之亦然

javascript - [ jQuery/Datatable ] : datatables not responsive, 禁用输入搜索

C数组声明和赋值?

scala - Scala 匿名函数中这两个表达式有什么区别?