为什么一个!函数之前没有返回布尔值相反的值?

125*_*748 1 javascript iife

我正在阅读这个问题.我有点理解发生了什么,但我很困惑

!function foo() {
  console.log(true) ;
}()
Run Code Online (Sandbox Code Playgroud)

不回来false.

!function () {}()这也将返回与函数返回值相反的布尔值,在本例中为true,因为!undefined为true.如果您希望实际返回值是调用的结果,那么尝试这样做:

"也将返回布尔对面"让我觉得false应该返回.为什么不呢.alert(!true); //false

Poi*_*nty 6

没有return语句,函数返回undefined.当你申请时!,undefined你得到true.

尝试

console.log(!function() { return true; }());
Run Code Online (Sandbox Code Playgroud)

请注意,!IIFE之前的习惯用法就是这样 - 一个成语.!操作符对返回值有影响的事实几乎总是无关紧要,因为调用环境完全忽略了返回值.从而

+function() {
  // whatever
}();
Run Code Online (Sandbox Code Playgroud)

实际上是完全一样的,即使+一元算子与一元算子不同!.