JavaScript+函数名前面的符号

JavaScript+函数名前面的符号

我一直在查看有关自调用函数的信息,在某个地方我偶然发现了这个表示法:

+function(){}

有人能跟我解释一下+在函数前面签名意味着/做什么?


噜噜哒
浏览 1098回答 3
3回答

心有法竹

它强制解析器处理以下部分+作为表达。这通常用于立即调用的函数,例如:+function() { console.log("Foo!"); }();没有+在那里,如果解析器处于期望语句(可以是表达式或多个非表达式语句)的状态,则单词function看起来像函数的开头声明而不是一个函数表达所以()在它之后(在上面行的末尾)将是一个语法错误(在这个例子中,名称的缩写也是如此)。带着这个+,它使其成为一个函数表达式,这意味着名称是可选的,并导致对函数的引用,该函数可以被调用,因此括号是有效的。+只是其中一个选择。也可以是-, !, ~或者任何其他一元运算符。或者,您可以使用括号(这是比较常见的,但在语法上既不多也不差):(function() { console.log("Foo!"); })();// or(function() { console.log("Foo!"); }());

一只名叫tom的猫

附属机构+通常用于强制数值铸造的值。正如这个答案所解释的..在这种情况下,它被称为‘一元加运算符’(为了便于谷歌搜索)。var num = +variant;因此,在函数前面,它可以强制函数的结果被解释为一个数字。我对此表示怀疑,但从理论上讲,JIT可以使用它将函数编译为只用于数字的函数等等。然而,为了防止一元加上在较大表达式中使用的级联,您需要括号:blah + (+(function(){ var scope; return "4"; })());

郎朗坤

因此,简单的回答是,它通过以某种方式使用函数来防止语法错误。还可以指示引擎您甚至对返回值不感兴趣,方法是使用void操作员:void function() { console.log("Foo!"); }();当然,把支撑套在整件事情上也能达到这个目的。
打开App,查看更多内容
随时随地看视频慕课网APP