我用JavaScript编写的一段非常简单的代码存在问题,请问您能帮我些忙吗?未定义的变量,值== false与!值
这里就是我想我已经明白到目前为止关于JavaScript和变量:
- 一个未定义的值进行评估,以虚假的布尔运算
- 通过在比较 - 使用==操作符,你”重新询问两个数值是否具有可比性,无论他们的类型如何
我在网上课程中发现了一个练习文件,我尝试这样做,但是我没有得到本课中预期的相同结果;主要的问题是我通过“if value == false {...}”来比较值,而解决方案使用“if!value {...}”
所以我决定写一个非常短的代码,以便自己尝试,但我得到了不同的结果。在下面的例子中,我期望这个JS代码生成两个相同的警报(“foo等于false”),但是第一个if语句返回“foo不等于false”,而第二个if返回(如预期的那样) “foo等于假”。
这是我写的东西:
var foo = undefined;
if (foo == false) {
alert("foo is equal to false");
} else {
alert("foo is not equal to false"); // Javascript executes this row
}
if (!foo) {
alert("foo is equal to false"); // Javascript executes this row
} else {
alert("foo is not equal to false");
}
AFAIK的双中频应该做同样的工作,逸岸当我试图在第一线的值替换“变种富=不确定;”用“var foo = 0;”它按预期工作,0是另一个应该被评估为假的值,或者至少这是我记得的。
你能告诉我我做错了什么吗?
那是因为不等于'FALSE'。然而,undefined是falsey所以'undefined' - > true – Raynos 2012-01-04 17:07:44
等于false和“falsey”之间的区别是什么? – Cesco 2012-01-04 17:16:46
如果相等然后'x ==虚假'如果虚假然后'!x == true' – Raynos 2012-01-04 17:17:16