【问题标题】:Why does this if statement succeed with a non-boolean value?为什么这个 if 语句以非布尔值成功?
【发布时间】:2022-01-10 22:12:03
【问题描述】:
var m = 5;
if (m) {
    document.write(m);
}

在我看来,m 不是 bool 类型,因此,这个 if 语句不会被执行。但是,我确实看到我的屏幕上打印了 m 的值。为什么?

【问题讨论】:

  • 该值不需要是布尔值。条件将值评估为真或假。

标签: javascript if-statement


【解决方案1】:

您应该阅读有关真值的信息 (MDN)。

在 JavaScript 中,真值是在布尔上下文中遇到时被视为 true 的值。所有值都是真实的,除非它们被定义为虚假(即,false00n""nullundefinedNaN 除外)。

0 以外的任何数字都是真实的,所以if(5)if(true) 相同。

【讨论】:

  • 然后是浏览器特定的虚假值document.all,尽管它是一个对象,但它是虚假的。这是出于历史原因... :-)
猜你喜欢
  • 2019-10-04
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 2013-03-01
  • 2013-03-26
  • 2011-12-03
  • 2011-03-25
相关资源
最近更新 更多