函数表达式前面的 JavaScript 加号

标签 javascript function operators iife self-invoking-function

我一直在寻找有关立即调用函数的信息,在某个地方我偶然发现了这种表示法:

+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/

相关文章:

javascript - 如何防止用户重复询问同一问题?

c# - 使用窗口内的自定义关闭按钮关闭 kendoui 窗口

javascript - 避免 View 中元素名称冲突的最佳实践 - BoilerplateJS

c - 如何连接两个整数变量并制作一个浮点变量?

JavaScript 符号类型 : (non-string object keys)

c# - 以字符串作为索引和函数指针或委托(delegate)作为值的 SortedList?和通过字符串调用函数?

Javascript 闭包和术语

JavaScript:编写函数,将一个对象和一个函数数组作为输入参数并返回一个数组

PHP 非假空合并运算符

php - 如何在 PHP 中显示数据库中的数据,其中每出现 4 个数据,其他数据都放在下面