我一直在寻找有关立即调用函数的信息,在某个地方我偶然发现了这种表示法:
+function(){console.log("Something.")}()
有人可以向我解释一下函数前面的 +
符号的含义/作用吗?
最佳答案
它强制解析器将 +
之后的部分视为表达式。这通常用于立即调用的函数,例如:
+function() { console.log("Foo!"); }();
如果没有 +
那里,如果解析器处于期望语句(可以是表达式或多个非表达式语句)的状态,则单词 function
看起来像是函数 declaration 的开头,而不是函数 expression 的开头,因此它后面的 ()
(在上面的行)将是一个语法错误(在该示例中,缺少名称也是如此)。 加上的+
,使它成为一个函数表达式,这意味着名称是可选的,并且导致对函数的引用,可以被调用,所以括号是有效。
+
只是选项之一。它也可以是 -
、!
、~
或任何其他一元运算符。或者,您可以使用括号(这更常见,但在语法上既不正确也不正确):
(function() { console.log("Foo!"); })();
// or
(function() { console.log("Foo!"); }());
关于函数表达式前面的 JavaScript 加号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13341698/