gpt4 book ai didi

javascript - 变量作用域在 jquery 中如何工作?

转载 作者:行者123 更新时间:2023-12-02 20:29:16 25 4
gpt4 key购买 nike

var change = 1;

$("#game").click(function (e) {
if (change == 1) {
var data = $(e.target).closest("td").text();
var p1 = $("#player1").val();
var p1_value = p1 + data;
$("#player1").val(p1_value);
change = 2;
} else(change == 2) {
var data = $(e.target).closest("td").text();
var p2 = $("#player2").val();
var p2_value = p2 + data;
$("#player2").val(p1_value);
change = 1;
}

});

是这样写的吗?顺便说一句,这里它不会进入 else 循环。

最佳答案

JavaScript 只有 function scope ,而不是“大括号范围”。如果你想非常正确,你可以将所有声明放在函数的顶部:

$("#game").click(function(e) {
var data = '',
p1 = '',
p1_value = '',
p2 = '',
p2_value = '';

if (change == 1) {
data = $(e.target).closest("td").text();
p1 = $("#player1").val();
p1_value = p1 + data;
$("#player1").val(p1_value);
change = 2;
}
else if (change == 2) { // you forgot `if`
data = $(e.target).closest("td").text();
p2 = $("#player2").val();
p2_value = p2 + data;
$("#player2").val(p1_value);
change = 1;
}
});

至少JSLint提示 data 已定义。

但是您可以通过另一种方式优化(并缩短!)您的函数:

$("#game").click(function(e) {
var $player = $('#player' + change);
$player.val($player.val() + $(e.target).closest("td").text());
change = (change === 1) ? 2 : 1;
}

关于javascript - 变量作用域在 jquery 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4417843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com