繁体   English   中英

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

[英]Why does a ! before a function not return boolean opposite value?

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

!function foo() {
  console.log(true) ;
}()

不返回false

!function () {}()这还将返回与函数返回值相反的布尔值,在本例中为true,因为!undefined为true。 如果您希望实际的返回值是调用的结果,请尝试通过以下方式进行操作:

“也将返回布尔值相反的值”使我认为应该返回false 为什么不呢 alert(!true); //false

如果没有return语句,该函数将返回undefined 当您申请! undefined您将得到true

尝试

console.log(!function() { return true; }());

注意,习惯用法! 在IIFE之前就是这样-一个成语。 事实! 运算符对返回值几乎没有影响,因为返回值被调用环境完全忽略了。 从而

+function() {
  // whatever
}();

实际上,即使+一元运算符不同于! ,它实际上也是完全相同的! 一元运算符。

具有空return语句或不存在的return语句的函数在调用时将返回未定义的值。 正在申请! 设置为“虚假”值(例如0,null,undefined)将返回true。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM