2014-10-04 3 views
-2

getJSON 함수 내에서 변수를 사용하려고합니다. 어떻게 그것을 전달할 수 있습니까? 이것이 제가 시도한 것입니다.JS/JQ : 인라인 함수에서 변수에 액세스

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"인 문자열입니다. 제대로 전달하려면 어떻게해야합니까?

+1

변수가 이미 _global_이므로'.getJSON' 호출 내에서 변수에 액세스 할 수 있어야합니다. – melancia

+0

이 모든 작업은 함수 내에서 수행됩니다. 좀 더 많은 코드를 추가하겠습니다. – Qaz

답변

0

그냥 사용할 수 있습니다. getJSON의 콜백 함수 안에 매개 변수로 넣지 않고 이미 전역 변수이므로 변수로 사용하십시오.

+0

와우, @MelanciaUK가 코멘트에서 말했던 것과 내가 나의 대답에서 자세히 기술 한 것을 복사 한 대답을 upvoted/받아 들였다 ... 정의가있다. – Shomz

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

@MelanciaUK 질문이 가장 선명하지 않을 수 있습니다. 하지만 OP는 콜백 내부의 원래 parent_id에 액세스하려고합니다. – Shomz

관련 문제