2

我正在创建一个简单的井字游戏,我目前正在尝试将用户的支票存储到变量中。问题是,使用我当前的代码,xMoves 和 oMoves 数组返回 Void 0。这段代码有什么问题? http://jsfiddle.net/Z6StP/

var storeMoves = function () {
    if (currentPlayer === X) {
        xMoves.push(cellTracker);
    } else if (currentPlayer === O) {
        oMoves.push(cellTracker);
    }
};
4

2 回答 2

1

void 0;只是表示undefined价值的另一种方式。

.push()方法没有void 0返回。他们返回新的数组长度。

您在控制台中看到的是内部带有void 0 (或undefined的数组。那是因为您正在推cellTracker入从未分配过值的数组。

确实对 进行了赋值cellTracker,但这是一个局部变量。删除它var之前的,您将分配给外部的。

/*var*/ cellTracker = $(this).attr('id');
于 2013-06-08T14:25:03.840 回答
0

因为您再次cellTrackertd's. 删除定义并使用已经定义的变量,它将起作用。

喜欢:

$('td').one('click', function () {
    turnCount += 1;
    setCurrentPlayer();
    $(this).text(currentPlayer);
    cellTracker = $(this).attr('id');
    storeMoves();
    console.log(turnCount, xMoves, oMoves);
});

小提琴:http: //jsfiddle.net/IrvinDominin/Z6StP/1/

于 2013-06-08T14:25:08.303 回答