var hungry = true;
var foodHere = true;
var eat = function() {
if (hungry && foodHere === true) {
return(true);
} else {
return(false);
}`
};
第一行是正确的语法。很长一段时间我只是在说hungry && foodHere = true
...我无法弄清楚(并且仍然不明白)为什么这是错误的。我理解=
(赋值)和===
(等于)之间的区别。我最初将变量分配为true
,所以我不会在if语句中询问他们设置的内容是什么?为什么我要在var定义中设置变量=
,但是在检查它们时我使用===
值?
答案 0 :(得分:5)
=
仅用于分配变量。 ===
或==
用于比较。举个好例子,我们必须研究比较运算符。
比较运算符的语法非常简单,用它们来计算表达式。比较运营商是:
=== //strict equality
== //Parsed or partial equality
> //Greater Than
< //Less than
>= //Greater than or equal to
<= //Less than or equal to
要正确使用这些,您必须知道正确的语法。例如,我不能做类似的事情:
if(true == 1 === true) //do something
因为这会使代码无效,并使用==
减慢代码的速度,这将我带到下一部分。
JavaScript中的两个相等运算符是==
和===
。他们做了两件非常不同的事情。
严格相等(===
)测试两个值是否完全等价,包括类型和值。
Parsed equality(==
)测试两个值是否在值上是否相等,但是解析尝试连接不同的类型。
JavaScript中有两个主要的不等式值(!==
),它们基于平等(===
和==
)非常自我解释
这是解释三者的图表。
1 0 true false null undefined ""
1 === !== == !== !== !== !==
0 !== === !== == == == !==
true == !== === !== !== !== !==
false !== == !== === == == ==
null !== == !== == == == ==
undefined !== == !== == == === !==
"" !== == !== == == !== ===
添加@jcollum所说的内容,=
定义了一个变量值,if(something === true)
简化为if(something)
。同样,if(something === false)
简化为if (!something)
。
您还需要单独进行比较。 if(7 & 6 < 10)
返回false,因为它是if(7 === true && 6 < 10)
的简化版本。
答案 1 :(得分:1)
转过来:
hungry && foodHere === true
进入
hungry && true
或只是
hungry
使用赋值运算符而不是比较运算符会阻止逻辑正常工作。