从不同范围访问变量(Javascript)
我在另一个函数中有这个回调函数-从不同范围访问变量(Javascript),javascript,scope,Javascript,Scope,我在另一个函数中有这个回调函数- var getData = function(){ var x =""; myCollection.find().toArray(function(err,records){ //myCollection is declared somewhere else x = "this is where I set my variable"; }); console.log(x); //x is just blank } 如
var getData = function(){
var x ="";
myCollection.find().toArray(function(err,records){ //myCollection is declared somewhere else
x = "this is where I set my variable";
});
console.log(x); //x is just blank
}
如何在回调函数内部设置变量x,使其仍将该值保留在函数作用域之外?是否可能?是
find()。toArray(…)
是一个偶然的“异步”操作?如果不是,回调是否执行一次?因为在这段代码中,只有一个x
变量,所以赋值要么没有发生,要么没有很快发生。当然,如果回调函数在console.log之前调用,并且实际设置x
@user2864740的值,那么代码应该按原样工作:您可能是对的!我没有想到这一点。可能的重复-它对于其他所有异步任务都是一样的(在您的例子中是数据库?)