我正在练习功能,很沮丧。该代码仅生成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();
答案 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();