【发布时间】:2016-10-14 03:19:04
【问题描述】:
我试图弄清楚为什么我编写的底部函数不能正常工作。每当我尝试对其进行测试时,都会收到以下错误:未捕获的 ReferenceError:后缀操作中的左侧表达式无效。我假设这是因为代码无法识别“x”字符串与变量 x 相同,一旦它在添加到 x 的值时被去掉引号。有人可以帮我解决这个问题吗?如果没有,你能建议一些替代方法吗?提前致谢!
var grid = [[null, null, null],
[null, null, null],
[null, null, null]];
function checkWin() {
vals = ["x", "o"];
var x = 0;
var o = 0;
for (var k = 0; k < vals.length; k++) {
var value = vals[k];
for (var i = 0; i < 3; i++) {
if (grid[i][i] === value) {
(value.replace(/['"]+/g, '')) ++;
}
if (grid[2 - i][i] === value) {
(value.replace(/['"]+/g, '')) ++;
}
for (var j = 0; j < 3; j++) {
if (grid[i][j] === value) {
(value.replace(/['"]+/g, '')) ++;
}
if (grid[j][i] === value) {
(value.replace(/['"]+/g, '')) ++;
}
}
}
}
if (x === 3) {
alert("X wins!");
} else if (o === 3) {
alert("O wins!");
}
}
【问题讨论】:
-
在表达式
(value.replace(/['"]+/g, '')) ++;中,replace之后会返回一个字符串。并且字符串不能递增/递减。 -
使用
parseInt()而不是删除引号。 -
嘿 Tushar,我实际上正在深入研究这个问题,看看您是否正确。我的印象是 replace(/['"]+/g, '') 会去掉引号。@mseifert 我试过 parseInt() 但我得到的只是 NaN。根据 MDN,parseInt() 的返回值是“从给定字符串解析的整数。如果第一个字符无法转换为数字,则返回 NaN。”无论如何,谢谢!
-
请从您的代码中删除多余的空行。
-
@Tushar 其实并不是说字符串不能自增;就是表达式不能自增。