Javascript 包含承诺调用的函数中的参数范围
固定参数(一个一旦传递给函数就不会更改的参数)是否保留在函数内承诺调用的范围内。例如,我可以在下面的函数中信任x吗Javascript 包含承诺调用的函数中的参数范围,javascript,promise,Javascript,Promise,固定参数(一个一旦传递给函数就不会更改的参数)是否保留在函数内承诺调用的范围内。例如,我可以在下面的函数中信任x吗 someFunc(1); someFunc(2); function someFunc(x){ somePrmsFunc.then(function(){ somePrmsFunc.then(function(){ if (x == 1) alert(x); }); }); }
someFunc(1);
someFunc(2);
function someFunc(x){
somePrmsFunc.then(function(){
somePrmsFunc.then(function(){
if (x == 1)
alert(x);
});
});
}
由于
x
不是对象,因此您可以信任x
函数somePrmsFunc(){
返回新承诺(功能(解决、拒绝){
设置超时(解析,1000);
});
}
函数someFunc(x){
somePrmsFunc()。然后(函数(){
console.log('promise 1 resolved',x);
somePrmsFunc()。然后(函数(){
log('nestedpromise resolved',x);
如果(x==1)
警报(x);
});
});
}
someFunc(1);
someFunc(2)
因为x
不是对象,所以您可以信任x
函数somePrmsFunc(){
返回新承诺(功能(解决、拒绝){
设置超时(解析,1000);
});
}
函数someFunc(x){
somePrmsFunc()。然后(函数(){
console.log('promise 1 resolved',x);
somePrmsFunc()。然后(函数(){
log('nestedpromise resolved',x);
如果(x==1)
警报(x);
});
});
}
someFunc(1);
someFunc(2)
由于x
不是对象,因此您可以信任x
是,因为参数不会被重新分配,如果它是原语,则初始调用时它将始终与someFunc
中的任何异步调用时相同。(如果它是一个对象,它可能会同时在外部发生变异)因为x
不是一个对象,是的,您可以信任x
是的,因为参数不会被重新分配,如果它是一个基元,它在初始调用时将始终与someFunc
内部的任何异步调用时相同。(如果它是一个对象,它可能同时在外部发生变异)