javascript内部函数变量从外部访问

时间:2015-04-21 08:18:58

标签: javascript jaggery-js

这是我的代码。 我需要在外部函数

中访问内部函数变量
var json = {}, state, response;
readRequestValues();
var xhr = new XMLHttpRequest();
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange=function(){
 if(xhr.readyState == 4){
    json.state = xhr.readyState;
    json.response = xhr.responseText;
    log.info(">>>>>>>>>>>>>>>"+json.state+">>>>>"+json.response);
    var retValue=JSON.stringify(json);
    log.info(">>> THIS IS RESULT >>>"+retValue);

 }
}
xhr.open("GET", strBackend, true);//async=true
xhr.send();

log.info(">>> HERE I NEED TO ACCESS retValue >>>"+retValue);

由于

2 个答案:

答案 0 :(得分:1)

你做不到。它尚未收到。
当我们得到它时,你应该调用任何代码:

var json = {}, state, response;
readRequestValues();
var xhr = new XMLHttpRequest();
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange=function(){
 if(xhr.readyState == 4){
    json.state = xhr.readyState;
    json.response = xhr.responseText;
    log.info(">>>>>>>>>>>>>>>"+json.state+">>>>>"+json.response);
    var retValue=JSON.stringify(json);
    log.info(">>> THIS IS RESULT >>>"+retValue);

    logValue(retValue); // here we call logger

 }
}
xhr.open("GET", strBackend, true);//async=true
xhr.send();


function logValue(val) {
  log.info(">>> HERE I NEED TO ACCESS retValue >>>"+val);
}    

答案 1 :(得分:1)

这与内部和外部功能无关,与同步和异步功能无关。 onreadystatechange回调是异步的,因此您必须调用在回调中使用接收数据的函数。否则你无论如何都无法访问它。

代码中的最后一行(log.info(...))将始终在回调内部收到数据之前执行。