-1

使用的重要性!在这段代码中

var testValue;
!function test() { testValue = 3; }();
console.log(testValue);
4

2 回答 2

3

!指示解释器将后面的内容解析为表达式而不是函数声明。函数声明不能​​在同一行调用,所以如果没有!,aSyntaxError会被抛出:

var testValue;
function test() { testValue = 3; }();
console.log(testValue);

只有函数表达式可以立即调用。但是,为了表示函数表达式,在函数周围使用括号可能会更清楚,而不是在任何地方都没有使用函数名称!时命名函数没有那么多意义,例如:test

var testValue;
(() => {
  testValue = 3;
})();
console.log(testValue);

于 2018-09-09T01:15:54.860 回答
0

函数不会自动成为对象。您应该在括号内定义它或将其分配给变量。如果你用!用于函数定义。这意味着 !(function(){console.log("hi");}) 现在您可以插入 () 来运行该函数。

于 2018-09-09T01:30:24.800 回答