Java脚本通过引用调用

时间:2016-07-13 18:46:42

标签: javascript

我必须使用参数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);
                    ....
            } 

1 个答案:

答案 0 :(得分:0)

在JavaScript中,原始参数通过值传递,对象参数通过引用传递。 (https://snook.ca/archives/javascript/javascript_pass

观察这个小提琴:https://jsfiddle.net/8hkmysr1/8/

当回调函数运行时,param1不受全局值更改的影响,因为它是按值传递的。 param2因参考传递而受到影响。

因此,您必须将对象传递给函数,以便闭包引用原始对象,或者必须在全局范围内声明该变量并读取该值。