【问题标题】:Checking a Boolean inside of an if statement [duplicate]检查 if 语句中的布尔值 [重复]
【发布时间】: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 语句,因为statusfalse。而且,它是一个布尔值,而不是一个字符串。

我错了。它返回了"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


【解决方案1】:

您遇到这种情况是因为状态是 js 中的保留字。使用另一个变量名,例如 stat,它会正常工作。

了解更多info

var stat = false;
if(stat){
    console.log("status is true");
} else {
    console.log("status is false");
}

【讨论】:

    猜你喜欢
    • 2013-03-01
    • 2015-05-25
    • 2020-08-20
    • 2021-11-08
    • 1970-01-01
    • 2016-11-08
    • 2021-08-03
    • 1970-01-01
    • 2023-01-25
    相关资源
    最近更新 更多