未定义的变量,value == false与!value的比较。
未定义的变量,value == false与!value的比较。
我在JavaScript中遇到了一个非常简单的代码问题,你能帮我吗?
以下是我对JavaScript和变量的理解:
- 在布尔运算中,未定义的值被评估为假
- 使用==运算符进行比较时,你是在询问两个值是否可比较,而不考虑它们的类型
我在一个在线课程中找到了一个练习文件,我尝试去做,但是得到的结果和课程中预期的结果不同;主要问题是我使用了"if value == false { ... }"这样的比较,而正确的解决方案是使用"if !value { ... }"
所以我决定写一个非常简短的代码来自己尝试一下,但是我得到了混合的结果。在下面的示例中,我希望这段JS代码生成两个相同的警告("foo is equal to false"),但是第一个if语句返回"foo IS NOT equal to false",而第二个if语句返回(如预期的)"foo is equal to false"。
这是我编写的代码:
var foo = undefined; if (foo == false) { alert("foo is equal to false"); } else { alert("foo is not equal to false"); // JavaScript执行了这一行 } if (!foo) { alert("foo is equal to false"); // JavaScript执行了这一行 } else { alert("foo is not equal to false"); }
据我所知,这两个if应该做相同的工作,事实上,当我尝试将第一行的值"var foo = undefined;"替换为"var foo = 0;"时,它按预期工作了,0也是一个应该被评估为假的值,或者至少这是我记得的。
你能告诉我我做错了什么吗?