gpt4 book ai didi

javascript - 揭示模块模式函数初始化风格

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:36:30 24 4
gpt4 key购买 nike

我想知道,在初始化一个对象的时候,额外的括号有什么意义。例如:

var foo = function(){ ... }();

对比

var foo = (function(){ ... }());

我假设一些与范围相关的东西,但我想知道是否有人可以更准确地说明具体差异,因为它们似乎都根据每个匿名函数返回的内容来初始化对象。

最佳答案

在那种特定情况下,没有有效的区别。

有些人喜欢外部 (...),因为它在 = 运算符附近为他们提供了一个视觉提示,表明该函数正在被调用。

但是赋值运算符导致函数被评估为赋值运算符右手操作数的表达式,因此它可以被调用而不需要进一步强制它退出函数声明。


如果没有赋值,就需要一些语法来让解释器知道 function 关键字被用作匿名函数表达式。

例如……

(function() {
// code
})();

此处括号解决了 function 的歧义,因此它被视为 (...) 组中的单个表达式。


分组运算符只是强制将函数 计算为表达式的一种方法。大多数 JavaScript 运算符都可以用于此目的。一元运算符可能是最安全的,例如...

!function() {
// code
}();

……或者……

void function() {
// code
}();

在这两种情况下,函数 都被视为相应运算符的单个操作数。

关于javascript - 揭示模块模式函数初始化风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10078464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com