使用带括号和或的混淆

时间:2016-09-10 23:37:41

标签: javascript

我是Javascript的新手,但在我的脑海中,如果我没有输入“是”,那么下面的陈述应该是假的。或者没有'。但是,脚本似乎忽略了这一点,只是返回true或false,具体取决于是否a = 1。有人可以解释我做错了什么吗?非常感谢提前。



var a = 1;
var box1 = prompt("Type 'yes' or 'no' for statement to be true");
if ((box1 === "yes" || "no") && a === 1) {
  alert("Hooray!");
} 




2 个答案:

答案 0 :(得分:3)

您需要将条件更改为:

(box1 === "yes" || box1 === "no")

您的情况评估为:box1等于"是"或"否"。任何非空字符串的字符串都将计算为true,因此" no"转换为true,这意味着您的条件总是评估为真。



var a = 1;
var box1 = prompt("Type 'yes' or 'no' for statement to be true");
if ((box1 === "yes" || box1 === "no") && a === 1) {
  alert("Hooray!");
} 




答案 1 :(得分:2)

你需要打破这个条件:

<script>
var a = 1;
var box1 = prompt("Type 'yes' or 'no' for statement to be true");
if ((box1 === "yes" || box1 === "no") && a === 1) {
  alert("Hooray!");
} 
</script>

你的条件是:(box1等于&#34;是&#34;或&#34;没有&#34;)和等于1 请注意&#34;否&#34;是一个独立的条件。 &#34;无&#34;作为布尔值是真的! 所有字符串都不是&#34;&#34; (空)是真的。 所以是:(方框1等于&#34;是&#34;或)和等于1