React实践指南中的比较分配

问题描述 投票:0回答:1

在“宣布优胜者”部分的React实用教程中,该代码已显示:

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;
}

这是一个井字游戏,我不了解此处的比较工作原理(我了解结局结果,但不了解过程。)有人可以启发我吗?

reactjs comparison-operators
1个回答
2
投票

让条件破损并进行分析

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

如果存在&&(AND)条件,则可以中断条件。AND条件顺序。每当发现条件返回假时,下一个条件os将不会执行。所以现在的条件是:1.正方形[a]2.平方[a] ===平方[b]3.平方[a] ===平方[c]

从您的代码中,我可以假设squares是很大的array

  1. 正如第一个条件所说的,squares [a]将在大squares数组中查找索引,如果该元素存在,则返回true,否则根本不执行下一个条件。
  2. 在第二种情况下,它比较存在于平方数组中的索引a和b的值。像squares [0] === squares [1]。可以相等还是不相等,取决于您拥有的平方数组。如果第二个条件失败,那么它将完全不执行第三个条件。
  3. 与条件2相同,条件3被执行,它将平方数组的值与索引b和c进行比较。

我希望这很清楚。为了更好地理解,请打印平方数组并进行检查。

© www.soinside.com 2019 - 2024. All rights reserved.