Javascript React教程函数calculateWinner(正方形)don';我不明白

Javascript React教程函数calculateWinner(正方形)don';我不明白,javascript,reactjs,Javascript,Reactjs,在react教程页面中,我遇到了理解此代码的问题 我不明白为什么不能 if (squares[a] === squares[b] && squares[a] === squares[c]) { 在原始代码中有额外的方块[a]有什么好处?如果在的开始处不设置方块[a]如果条件,如果未定义方块[a],则可以得到js错误 简单来说,我们有如下条件: if (a && a === b && a === c) { 它将首先检查a变量,如果未定义,则不会执

在react教程页面中,我遇到了理解此代码的问题

我不明白为什么不能

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

在原始代码中有额外的方块[a]有什么好处?

如果在
的开始处不设置
方块[a]
如果
条件,如果未定义
方块[a]
,则可以得到js错误

简单来说,我们有如下条件:

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

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

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

在这种情况下,它不会抛出错误,只是“未定义”。例如,var a={}和a[“foo”]将是未定义的。因此,在上述情况下,它将检查(undefined==sqaures[b])等。如果sqaures未定义,则只会抛出“无法读取undefined的属性a”的错误。@SaurabhGhewari谢谢。你是对的。在我的回答中,如果没有定义,您将得到一个错误。所以,如果你用任何值来定义它,它都是可以的。
if (squares[a] === squares[b] && squares[a] === squares[c]) {
if (a && a === b && a === c) {