错误分配,逻辑运算符

时间:2014-02-12 10:06:34

标签: javascript

在代码学院学习Javascript。这是我给出的测试,

“在eat函数内部,创建一个if语句,只有当饿和foodHere都为真时才返回true,否则返回false。”

我的代码正在执行,但它有一个警告。可能是什么问题?

var hungry = true;
var foodHere = true;

var eat = function() {

  if(hungry && foodHere){
      console.log("I am hungry");
  }else if(hungry && foodHere = false){
      console.log("Choose one");
  }


};
eat();

4 个答案:

答案 0 :(得分:3)

var hungry = true;
var foodHere = true;

var eat = function() {

  if(hungry && foodHere){
      console.log("I am hungry");
  }else {
      console.log("Choose one");
  }


};
eat();

问题是,您尝试在条件foodHere = false中分配值。如果您想比较所需的内容==,如果您想确保类型相同,请使用===。 但你根本不需要这个条件!

作业要求你返回一个布尔值(truefalse)而不是打印一些东西,所以我想你的代码应该是这样的:

var hungry = true;
var foodHere = true;

var eat = function() {
  return (hungry && foodHere)
};

eat();

答案 1 :(得分:2)

Single =用于赋值,==用于比较

var hungry = true;
var foodHere = true;

var eat = function() {

  if(hungry && foodHere){
      console.log("I am hungry");
  }else if(hungry && foodHere == false){
      console.log("Choose one");
  }


};
eat();

无论如何,你不需要进行第二次比较,因为如果第一次比较是假的,那么它总会通过其他

答案 2 :(得分:1)

我只想提供有关emilioicai答案的更多信息,JavaScript中有两种“平等比较”

  1. 等于(==)
  2. 完全等于(===)
  3. 参考:http://www.w3schools.com/js/js_comparisons.asp

答案 3 :(得分:0)

=用于赋值,==用于值比较,===用于值和数据类型比较。所以你可以在使用==时与false进行比较。但这不是最好的做法。我们总是使用'!'将true转换为false时的否定运算符

var hungry = true;
var foodHere = true;

var eat = function() {

  if(hungry && foodHere){
      console.log("I am hungry");
  }else if(!hungry || !foodHere){
      console.log("Choose one");
  }
};
eat()

我正在使用||运营商假设任何人都需要假。你可以去&&如果两者都是假的