我正在用JavaScript实现一个tic-tac-toe游戏。为什么以下布尔语句不在if
块内运行(不返回true)?
if("O" == "O" == "O") {
console.log("player 'O' has won the game.");
}
这是因为"O" = "O"
被评估为返回true
。然后将true
与返回"O"
的{{1}}进行比较?
如果是这样,我如何比较false
中索引0,3,6处的字符是否彼此相等?
更新代码。
["O", "O", "X", "O", "X", "O", "O"]
答案 0 :(得分:0)
您应该为此编写两个单独的等级==
检查:
if (smth[0] == smth[3] && smth[3] == smth[6] )
答案 1 :(得分:0)
保持代码更短,同时仍然(可以说)更容易阅读的一个技巧是检查三者的串联。即if (x[0]+x[3]+x[6] === "OOO") ...
。
您还可以通过以下方式检查双方:
if ("OOO/XXX".indexOf(x[0]+x[3]+x[6]) >= 0)
答案 2 :(得分:0)
这是因为" O" =" O"被评估为返回true。然后将true与" O"进行比较。返回false?
是。
在这种情况下只有三个项目,最简单的方法是使用a === b && b === c
,但你可以创建一个辅助函数来检查无限数量项目的相等性:
function allEqual() {
var argArray = Array.prototype.slice.call(arguments);
return argArray.every(function(el) {
return el === argArray[0];
});
}
console.log(allEqual());
console.log(allEqual("O", "O", "O", "O"));
console.log(allEqual("X", "O", "O", "O"));
console.log(allEqual("O", "X", "O", "O"));
console.log(allEqual("O", "O", "O", "X"));