为什么这个'='语法在这个js片段中不正确?

时间:2015-02-21 02:43:58

标签: javascript

var hungry = true;
var foodHere = true;

var eat = function() {
  if (hungry && foodHere === true) {
      return(true);
  } else {
      return(false);
  }`

};

第一行是正确的语法。很长一段时间我只是在说hungry && foodHere = true ...我无法弄清楚(并且仍然不明白)为什么这是错误的。我理解=(赋值)和===(等于)之间的区别。我最初将变量分配为true,所以我不会在if语句中询问他们设置的内容是什么?为什么我要在var定义中设置变量=,但是在检查它们时我使用===值?

2 个答案:

答案 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

使用赋值运算符而不是比较运算符会阻止逻辑正常工作。