函数表达式前面的JavaScript加号

JavaScript

Harry逆天Eva

2020-03-10

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

+function(){console.log("Something.")}()

有人可以向我解释+该功能前面符号的含义/含义吗?

第434篇《函数表达式前面的JavaScript加号》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

2个回答
Eva阿飞 2020.03.10

它强制解析器将后面的部分+视为表达式。通常用于立即调用的函数,例如:

+function() { console.log("Foo!"); }();

如果没有+解析器,则该解析器处于期望一条语句(可以是一个表达式或几个非表达式语句)的状态,则该单词function看起来像是函数声明的开头,而不是函数表达式的开头,因此()紧随其后(上面一行的末尾)是语法错误(在该示例中,缺少名称也是如此)。+,它使一个函数表达,这意味着该名称是可选的,并且结果的功能,其可以被调用的参考,因此,括号是有效的。

+只是选项之一。它也可以是-!~,或几乎任何其他一元运算符。或者,您可以使用括号(这是更常见的,但在语法上既不正确,也不正确):

(function() { console.log("Foo!"); })();
// or
(function() { console.log("Foo!"); }());
Jim西门 2020.03.10

因此简短的答案是,通过以一种或另一种方式使用函数结果,可以防止语法错误。

您还可以通过使用void运算符来指示引擎您甚至对返回值都不感兴趣

void function() { console.log("Foo!"); }();

当然,将括号放在整个对象上也可以达到此目的。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android