在此代码中使用 !
的重要性var testValue;
!function test() { testValue = 3; }();
console.log(testValue);
!
指示解释器将后面的内容解析为表达式,而不是作为函数声明的内容。函数声明不能在同一行上调用,因此如果没有!
,则会抛出SyntaxError
:
var testValue;
function test() { testValue = 3; }();
console.log(testValue);
只能立即调用函数表达式。不过,为了表示函数表达式,在函数周围使用括号而不是!
可能会更清楚,并且如果函数名称不在任何地方使用,那么命名函数test
就没有那么多意义了,例如:
var testValue;
(() => {
testValue = 3;
})();
console.log(testValue);
函数不会自动成为对象。您应该在括号内定义它或将其分配给变量。如果您使用 !用于函数定义。这意味着 !(function(({console.log("hi"(;}( 现在您可以插入 (( 来运行该函数。