You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React井字棋中handleClick提前返回的两个条件为何表现不同?

React井字棋handleClick提前返回逻辑的疑问解答

这俩条件虽然写在同一个if判断里,但触发逻辑和影响范围完全不一样:

  • winner条件:winner是整个棋盘的全局状态,一旦决出胜负,这个值就会被设为'X'或'O'。之后不管你点击哪个格子,进入handleClick函数时第一个条件就会成立,直接return终止函数,所以所有格子的点击都会被禁止。
  • squares[i]条件:squares[i]只是你当前点击的那个格子的状态,只有当这个格子已经被填充(有'X'或'O')时,这个条件才会成立,触发return让当前这次点击无效。但如果你点的是空白格子,这个条件不满足,函数会继续执行后续的落子逻辑,其他空白格子依然可以正常点击。

举个实际场景:

  1. 当棋盘已经有三个X连成线时,winner的值是'X',此时不管点哪个格子,if (winner || squares[i])的第一个条件都成立,直接返回,所有操作都失效。
  2. 还没分出胜负时,点击一个已经有O的格子,winner是null,但squares[i]是'O'(不为空),所以返回,这次点击无效;但点击空白格子时,squares[i]是null,条件不触发,就能正常落子。

简单说就是:winner管全局,只要它存在,所有点击都被拦;squares[i]只管当前点击的那个格子,只有这个格子被占了才拦这次操作,其他格子不受影响。

内容的提问来源于stack exchange,提问作者Janessa Bao Tran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 02:32:34