为啥这个 if 语句以非布尔值成功?
Posted
技术标签:
【中文标题】为啥这个 if 语句以非布尔值成功?【英文标题】: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 的值。为什么?
【问题讨论】:
该值不需要是布尔值。条件将值评估为真或假。 【参考方案1】:您应该阅读有关真值的信息 (MDN)。
在 javascript 中,真值是在布尔上下文中遇到时被视为
true
的值。所有值都是真实的,除非它们被定义为虚假(即,false
、0
、0n
、""
、null
、undefined
和NaN
除外)。
0 以外的任何数字都是真实的,所以if(5)
与if(true)
相同。
【讨论】:
然后是浏览器特定的虚假值document.all
,尽管它是一个对象,但它是虚假的。这是出于历史原因... :-)以上是关于为啥这个 if 语句以非布尔值成功?的主要内容,如果未能解决你的问题,请参考以下文章