函数表达式前面的JavaScript加号

2020/09/19 23:31 · javascript ·  · 0评论

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

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

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

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

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

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

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

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

就像@TJCrowder的答案的子代词一样,+通常用于强制数值强制转换为该SO答案所解释的在这种情况下,它称为“一元加号运算符”(为便于谷歌搜索)。

var num = +variant;

因此,在函数前面可以采用一种方法来强制将函数的结果解释为数字。我怀疑它是否会发生,但是从理论上讲,JIT可以使用它来将函数编译为仅数字函数等。但是,为了防止一元加号在较大的表达式中使用时被串联,您需要使用括号:

blah + (+(function(){ var scope; return "4"; })());

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

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

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

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

本文地址:http://javascript.askforanswer.com/hanshubiaodashiqianmiandejavascriptjiahao.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!