我必须使用参数grpname调用setTimeout(),但最初它尚未声明,但我希望它在更改后的内容时引用相同的值...
function test(grpname) {
$('.middle').load("display.php", {
"grpname": grpname
});
}
$(document).ready(function (e) {
$('#inv').hide("fast");
$('#t2').hide("fast");
$('#username').click(function () {
document.userid.username.value = "";
});
var grpname = document.userid.grpname.value;
$('#signup').click(function () {
$('#username').focus();
});
$('#signin').click(function () {
var username = document.userid.username.value;
setTimeout(test.bind(null, grpname), 1000);
....
}
答案 0 :(得分:0)
在JavaScript中,原始参数通过值传递,对象参数通过引用传递。 (https://snook.ca/archives/javascript/javascript_pass)
观察这个小提琴:https://jsfiddle.net/8hkmysr1/8/
当回调函数运行时,param1
不受全局值更改的影响,因为它是按值传递的。 param2
因参考传递而受到影响。
因此,您必须将对象传递给函数,以便闭包引用原始对象,或者必须在全局范围内声明该变量并读取该值。