如何访问全局局部变量的值
我返回了rsltCallback函数,当我调用googleSearchSuggestions函数时,我得到了未定义的值。当我console.log输入参数里面的rsltCallback函数它将输出打印到控制台。如何访问全局局部变量的值
var googleSearchSuggestions = function(search_Keyword , element) {
var parsed;
var uri = 'http://suggestqueries.google.com/complete/search?output=toolbar&hl=en&q=' + search_Keyword;
var xhr = (typeof XMLHttpRequest !== 'undefined') ? new XMLHttpRequest() : new ActiveXObject(Microsoft.XMLHTTP);
xhr.onreadystatechange = function(){
xhr.responseType = 'xml';
if(xhr.status == 200 && xhr.readyState == 4)
{
var response = xhr.responseXML;
var items = response.getElementsByTagName('toplevel')
for (var i = 0 ; i < items[0].childNodes.length;i++)
{
parsed = items[0].childNodes[i].firstElementChild.getAttribute('data');
rsltcallBack(parsed);
}
}
};
xhr.open('GET', decodeURI(uri), true);
xhr.send();
var rsltcallBack = function(input){
return input;
};
return rsltCallBack();
};
而不是访问本地变量的,只是初始化函数外部变量和局部赋值, 复制粘贴此,
var parsed ="";
var googleSearchSuggestions = function(search_Keyword , element) {
var uri = 'http://suggestqueries.google.com/complete/search?output=toolbar&hl=en&q=' + search_Keyword;
var xhr = (typeof XMLHttpRequest !== 'undefined') ? new XMLHttpRequest() : new ActiveXObject(Microsoft.XMLHTTP);
xhr.onreadystatechange = function(){
xhr.responseType = 'xml';
xhr.open('GET', decodeURI(uri), true);
xhr.send();
if(xhr.status == 200 && xhr.readyState == 4)
{
var response = xhr.responseXML;
var items = response.getElementsByTagName('toplevel')
for (var i = 0 ; i < items[0].childNodes.length;i++)
{
parsed = items[0].childNodes[i].firstElementChild.getAttribute('data');
rsltcallBack(parsed);
}
}
}
};
function rsltcallBack(input)
{
setTimeout(function()
{
alert(input);
},2000);
}
评论是不适合扩展讨论;这个对话已经[转移到聊天](http://chat.*.com/rooms/76063/discussion-on-answer-by-nandan-how-to-access-the-values-of-local-variables-格洛巴)。 – Taryn
有声明全局变量
var carName;
function myFunction() {
carName = 'Volvo';
}
的几种方法
本示例在函数外部声明变量,然后在函数范围内为其分配值。
另一个是
function myFunction() {
window.carName = 'Volvo';
}
这设置其可以使用删除window.carName要删除的窗口上的变量。
没有人,它不起作用。不管怎样,谢谢 –
This incident as JavaScript Variable hosting issue. for ex:
var value = "a";
function test() {
var value;
alert(value)
}
test();
the global variable return undefined error. same code as works fine as below
var value = 10;
function test() {
var value ="b";
alert(value);
}
test();
online reference :
http://techslides.com/understanding-javascript-closures-and-scope
http://*.com/questions/9085839/surprised-that-global-variable-has-undefined-value-in-javascript
的onreadystatechange的功能状态已经改变之后,才会被调用。这不是直接的;有一段时间国家尚未改变。因此,只有在调用onreadystatechange函数后才能访问parsedOutput;其价值尚未确定。 JavaScript不会停下来等待这发生;它允许请求在后台进行。即使onreadystatechange方法尚未被调用,它仍继续执行你的代码。
要解决您的问题,只需在使用parsedOutput之前等待响应即可。你可以通过使用onreadystatechange函数来触发代码中的下一步。
顺便说一句,在这样的背景下执行请求是调用异步请求。这是您如何使用JavaScript进行远程请求;它可以防止脚本在等待响应时挂起。
http://*.com/questions/14220321/how-to-return-the-response-from-an-ajax-call –