javascript 从外部访问内部函数变量
javascript inner function variable access from outside
这是我的代码。
我需要在外部函数中访问内部函数变量
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);
谢谢
你不能。这里还没收到。
当我们得到它时,你应该调用任何代码:
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);
}
这不是关于内部和外部函数,而是关于同步和异步函数。 onreadystatechange
回调是异步的,因此您必须在回调中调用使用接收到的数据的函数。否则你无论如何都无法访问它。
代码中的最后一行 (log.info(...)
) 将始终在回调中接收到数据之前执行。
这是我的代码。 我需要在外部函数中访问内部函数变量
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);
谢谢
你不能。这里还没收到。
当我们得到它时,你应该调用任何代码:
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);
}
这不是关于内部和外部函数,而是关于同步和异步函数。 onreadystatechange
回调是异步的,因此您必须在回调中调用使用接收到的数据的函数。否则你无论如何都无法访问它。
代码中的最后一行 (log.info(...)
) 将始终在回调中接收到数据之前执行。