我如何才能使此if / else语句正常工作?

时间:2018-10-05 17:54:03

标签: javascript

我正在练习功能,很沮丧。该代码仅生成if块,而不管提示如何。这是类型转换的东西。我想念什么?

function init() {
  function dogAllowed(breed) {
    var breed = prompt("what type of dog");
    if (breed = "pitbull") {
      console.log("dogNotAllowed");
    } else {
      console.log("dog Allowed");
    }
  }
  dogAllowed();
}
window.onload = init();

3 个答案:

答案 0 :(得分:1)

在您的if语句中,您需要比较等于(==)而不是赋值等于(=)。因此:if (breed == "pitbull")应该可以工作。

答案 1 :(得分:1)

JavaScript中的比较运算符为==,对于严格相等的运算符为====是一个赋值运算符(“将右边的值放在左侧的变量内),它会返回分配的值。这里的值是"pitbull",因此您的{{ 1}}等效于if (breed = "pitbull"),后跟breed = "pitbull"。JavaScript将非空字符串评估为true,因此您始终输入该if ("pitbull")的第一个分支。

if应该起作用,if (breed === "pitbull")也应该起作用。在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

上了解有关两者之间区别的更多信息

答案 2 :(得分:1)

由于您没有执行闭包操作,因此建议您分隔函数并也使用三元运算符。我还认为您应该适当缩进代码,因为它可以很好地帮助人们更好地理解它。

正如提到的其他答案一样,当您应该使用相等运算符时,您正在使用赋值运算符=。我建议不要使用==,因为它会进行类型转换,这会在以后导致更多问题。就我个人而言,我总是使用===自己进行数据类型转换,而不是将其留给javascript,因为它更不容易出错。

您可以这样分隔功能:

function init() {
  dogAllowed();
}

function dogAllowed (breed) {
  var breed = prompt("What breed of dog?");
  console.log(breed === "pitbull" ? "Dog not allowed" : "Dog allowed" )
}

window.onload = init();