我找到了这段代码:
!function () {}();
这里感叹号的作用是什么?
最佳答案
JavaScript 语法 101:这是一个函数声明:
function foo() {}
请注意,没有分号;这只是一个函数声明。您需要调用 foo()
,实际运行该函数。
现在,当我们添加看似无害的感叹号时:!function foo() {}
它将它变成一个表达式。它现在是一个函数表达式。
!
当然,单独并不能调用该函数,但我们现在可以输入 ()
最后:!function foo() {}()
,其优先级高于 !
并立即调用该函数。
function foo() {}()
将是一个语法错误,因为您不能将参数( ()
)放在函数声明之后。
所以作者所做的就是为每个函数表达式保存一个字节;一种更具可读性的编写方式是这样的:
(function(){})();
最后,!
使表达式根据函数的返回值返回 bool 值。通常,立即调用的函数表达式 (IIFE) 不会显式返回任何内容,因此其返回值为 undefined
,这给我们留下 !undefined
这是 true
。未使用此 bool 值。
关于javascript - 函数前面的感叹号有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28891106/