【发布时间】:2022-01-10 22:12:03
【问题描述】:
var m = 5;
if (m) {
document.write(m);
}
在我看来,m 不是 bool 类型,因此,这个 if 语句不会被执行。但是,我确实看到我的屏幕上打印了 m 的值。为什么?
【问题讨论】:
-
该值不需要是布尔值。条件将值评估为真或假。
var m = 5;
if (m) {
document.write(m);
}
在我看来,m 不是 bool 类型,因此,这个 if 语句不会被执行。但是,我确实看到我的屏幕上打印了 m 的值。为什么?
【问题讨论】:
您应该阅读有关真值的信息 (MDN)。
在 JavaScript 中,真值是在布尔上下文中遇到时被视为
true的值。所有值都是真实的,除非它们被定义为虚假(即,false、0、0n、""、null、undefined和NaN除外)。
0 以外的任何数字都是真实的,所以if(5) 与if(true) 相同。
【讨论】:
document.all,尽管它是一个对象,但它是虚假的。这是出于历史原因... :-)