【发布时间】:2020-04-25 22:48:33
【问题描述】:
我在 Javascript 中偶然发现了一个非常奇怪的事件,我无法确定。
这是一个非常简单的if 声明:
let hours = 20;
我在这里放了一个断点,并在调试器中设置了hours = 0。 我在调试器中测试!hours,确认结果为true,然后点击继续运行if语句。
if (!hours) {
console.log("Hours is false: " + hours);
} else {
console.log("Hours is true: " + hours);
}
要记录的预期结果:
小时为假:0
记录的实际结果:
小时为真:0
^ 鼠标悬停在hours 上,因此当前值可见
仅当 hours 最初设置为整数,然后在调试器中设置为 0 时才会发生这种情况。
Javascript 是否有一些关于真值即使在更改后仍保持其状态的模糊规则?
或者这是调试器和代码之间的差异(如果属实,基本上会破坏控制台的意义)?
到底为什么会这样?
【问题讨论】:
-
我认为当你放入调试器并尝试更改它不会影响所以基本上你有价值将 20 本身这就是它显示真实情况的原因
-
@Teemu,你怎么知道的?虽然很常见。我同意。很多如果错误是因为类型是字符串而不是 int 但通常在 html 发挥作用后在浏览器中。
-
@DILEEPTHOMAS 在调试器中更改值后,当我将鼠标悬停在
hours上时显示为 0 -
哦,他说在调试器中设置。也许这就是你知道@Teemu的方式
-
typeof hours在调试器中返回number
标签: javascript if-statement debugging