React教程功能calculateWinner(平方)不明白

时间:2018-08-23 03:09:43

标签: javascript reactjs

我有这个问题,请在React教程页面https://reactjs.org/tutorial/tutorial.html#declaring-a-winner

中理解此代码
function calculateWinner(squares) {
  const lines = [
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 8],
    [0, 3, 6],
    [1, 4, 7],
    [2, 5, 8],
    [0, 4, 8],
    [2, 4, 6],
  ];
  for (let i = 0; i < lines.length; i++) {
    const [a, b, c] = lines[i];
    if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {
      return squares[a];
    }
  }
  return null;
}

此行

if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {

我不明白为什么不能这样

if (squares[a] === squares[b] && squares[a] === squares[c]) {

在原始代码中使用多余的正方形[a]有什么好处?

2 个答案:

答案 0 :(得分:1)

如果您未在squares[a]条件的开始处设置if,则在未定义squares[a]的情况下会出现js错误。

为简单起见,我们具有以下条件:

if (a && a === b && a === c) {

它将首先检查a变量,如果未定义,则之后将不执行。

答案 1 :(得分:0)

检查squares [a]是否不为null,未定义,0,空字符串''和false,以便进一步检查squares [a]。如果squares [a]为null或未定义,或者为false或0,则条件将返回false,并且由于“ &&”条件运算符,将无法进行进一步的检查。