我看着这个:Returning values from nested functions in Javascriptjavascript变量作用域:从嵌套函数返回变量?
但它并没有真正帮助我(或者我太愚蠢得到它)。
我的变量范围有点关闭,我不明白为什么。我的alert()行为不如预期。试图在所有行上添加评论以解释我在想什么。
非常感谢任何意见/指针/答案!
var g = {};/is a large object with all kinds of other stuff and functions in it
g.ding = function(){ // my problem function
var baby = 'young'; // i thought I set a local var here
if(someVar==true) { // standard issue if statement
someAPI.class(// using an API that uses a function as its attribute
function(stuff){ // my anonymous function
baby = 'old'; // setting the var to something
}
);
}
return baby; // returning the var
}
alert(g.ding()); // i expect it to say "old" but it keeps saying "young". why?
新的编辑: 娟的接受的答案是伟大的,但是是不是还有用的setTimeout()处理异步函数调用,并从根本上让他们同步的方法吗?如果读过这些的人知道我想知道的答案。谢谢。
最有可能的是,因为'function(stuff)'永远不会运行。你的范围看起来很好。这里没有任何东西证明设置'baby =“old”'的代码行已经执行完毕。 'someVar'可能是错误的,或者'someAPI'永远不会调用你传递它的函数。 –
好吧,我最初确实用alert()函数调用了这个函数。我认为API函数的异步元素是解决方案。 – tim