JS/JQ:从内联函数访问变量

JS/JQ: Access variable from inline function

本文关键字:函数 访问 变量 JQ JS      更新时间:2023-09-26

我正试图在getJSON函数中使用一个变量。我怎样才能把它传进来?这就是我尝试过的。

function getComments(parent_id) {
    if(typeof(parent_id)==='undefined') parent_id = -1;
    console.log("parent_id type: " + typeof(parent_id)); // parent_id type: number 
    var message = { parentMessageID: parent_id };
    $.getJSON(UPDATECOMMENTCALL, message, function(data, parent_id) {
        console.log("JSON parent_id: " + typeof(parent_id)); // JSON parent_id: string
    }
}

函数中parent_id不是-1,而是一个值为"success"的字符串。我怎样才能把它正确地传进来?

您可以直接使用它,不要将它作为参数放在getJSON的回调函数中,只将它作为变量使用,因为它已经是全局的了。

回调函数参数的优先级高于同名范围变量(parent_id)。因此,通过在回调函数中访问它,您实际上是在引用函数参数,而不是在函数外部定义的变量。更改回调变量的名称将修复它。例如:

var parent_id = -1;    
console.log("parent_id type: " + typeof(parent_id)); // parent_id type: number 
var message = { parentMessageID: parent_id };
$.getJSON(UPDATECOMMENTCALL, message, function(data, p_id) { // changed to p_id
    console.log("JSON parent_id: " + typeof(parent_id)); // JSON parent_id: string
}

一般来说,避免使用相同的名字是个好主意,这样就可以避免所有重复的名字。

<小时>

简单的例子向您展示正在发生的事情:

var a = 1;
function f(a) {
    console.log(a);
}

想想f(2);会输出什么。