JavaScript井字棋verifyVictory函数语法错误求助
井字棋verifyVictory函数语法错误修复
你的代码存在两个关键语法问题,直接导致VS Code标记错误:
- 赋值/相等判断混淆:所有
state.cX = state.cY的写法错误,=是赋值运算符,你需要的是判断相等的==,用=会意外修改state的值,同时逻辑判断完全失效。 - else if语法结构错误:else if必须把判断条件放在
()内,你现在把条件写在了后续的{}里,不符合JavaScript语法规范。
修复后的完整代码:
const verifyVictory = () => { if( (state.c1 == state.c2 && state.c2 == state.c3 && state.c1 > 0) || (state.c4 == state.c5 && state.c5 == state.c6 && state.c4 > 0) || (state.c7 == state.c8 && state.c8 == state.c9 && state.c7 > 0) || (state.c1 == state.c4 && state.c4 == state.c7 && state.c1 > 0) || (state.c2 == state.c5 && state.c5 == state.c8 && state.c2 > 0) || (state.c3 == state.c6 && state.c6 == state.c9 && state.c3 > 0) || (state.c1 == state.c5 && state.c5 == state.c9 && state.c1 > 0) || (state.c3 == state.c5 && state.c5 == state.c7 && state.c3 > 0) ){ return true; } else if ( state.c1 != 0 && state.c2 != 0 && state.c3 != 0 && state.c4 != 0 && state.c5 != 0 && state.c6 != 0 && state.c7 != 0 && state.c8 != 0 && state.c9 != 0 ) { return null; } else { return false; } };
额外提示:如果要更严谨,可使用===严格相等判断(把==换成===,!=换成!==),避免类型转换带来的意外问题。
内容的提问来源于stack exchange,提问作者Kalem
相关产品推荐
相关产品推荐

