【发布时间】:2019-06-30 06:41:50
【问题描述】:
今天我在 Javascript 中遇到了一个我完全看不懂的问题。
我有这个代码:
var status = false;
console.log(status, typeof status);
if (status) {
console.log("status is true");
} else {
console.log("status is false");
}
我预计它不会满足if 语句,因为status 是false。而且,它是一个布尔值,而不是一个字符串。
我错了。它返回了"status is true",所以status 确实满足if 声明。
我更改了代码以指定条件,而不仅仅是变量:
var status = false;
console.log(status, typeof status);
if (status == false) {
console.log("status is false");
} else {
console.log("status is not false");
}
请注意,我切换了输出消息,因为我们不是检查变量本身的值,而是检查它是否为 false。
当我在控制台上看到"status is not false" 时,我真的开始恐慌了。怎么可能不是false?
我错过了什么?
【问题讨论】:
-
使用不同的变量名,或将其全部放在 IIFE 中,或使用
const代替var(因为window.status将始终是一个字符串,如window.name)跨度> -
我不确定您为什么会遇到这种情况。我测试了你的代码并得到了正确的结果。
-
@RyanWalls 如果您在顶层粘贴并运行代码,您也会体验到它。
-
@CertainPerformance 它看起来像是变量的名称。真是太感谢你了。
标签: javascript if-statement boolean