我正在阅读这个问题.我有点理解发生了什么,但我很困惑
!function foo() {
console.log(true) ;
}()
Run Code Online (Sandbox Code Playgroud)
不回来false.
!function () {}()这也将返回与函数返回值相反的布尔值,在本例中为true,因为!undefined为true.如果您希望实际返回值是调用的结果,那么尝试这样做:
"也将返回布尔对面"让我觉得false应该返回.为什么不呢.alert(!true); //false
没有return语句,函数返回undefined.当你申请时!,undefined你得到true.
尝试
console.log(!function() { return true; }());
Run Code Online (Sandbox Code Playgroud)
请注意,!IIFE之前的习惯用法就是这样 - 一个成语.!操作符对返回值有影响的事实几乎总是无关紧要,因为调用环境完全忽略了返回值.从而
+function() {
// whatever
}();
Run Code Online (Sandbox Code Playgroud)
实际上是完全一样的,即使+一元算子与一元算子不同!.