总的来说,我对 NodeJS 和 JavaScript 还比较陌生。这是我的脚本:
var fs = require('fs') ;
var temp = "???";
var test = function (){
fs.readdir("./", function(err,result){
temp = result; // i change the temp's value
console.log("inter result ....."+temp); // temp's value changed
setTimeout(pr,1000,"inter setTimeout: "+temp); // temp's value changed
});
}
var pr = function (str){
console.log("Print str: "+ str);
} ;
test();
setTimeout(pr,1000,"Out setTimeout print: "+temp); // Why here temp's value not change???
如何在回调之外更改为 var temp 的值?
最佳答案
setTimeout(pr,1000,"Out setTimeout print: "+temp);
与
相同var str = "Out setTimeout print: " + temp;
setTimeout(pr, 1000, str);
此时 temp
仍然是 "???"
。你必须使用
setTimeout(function() {
pr("Out setTimeout print: "+temp);
}, 1000);
关于javascript - 为什么 Nodejs callback() 不能访问回调范围外的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088471/