我试图在我的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,而是一个值为"成功"的字符串。我怎样才能正确传递它?
答案 0 :(得分:0)
您的回调函数参数的优先级高于具有相同名称(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);
输出的内容。
答案 1 :(得分:0)
您可以使用它,不要将它作为参数放在getJSON的回调函数中,只需将其用作变量,因为它已经是全局的。