这是我在论坛上的第一篇文章,请保持友善。
以下是我的代码:
var powerValue = 0;
for(let l = 0; l < array.length; l++) {
let path = pathfind.findPath(coordX, coordY, powerSourceIndex[l][0], powerSourceIndex[l][1], function(path) {
if(path !== null) {
powerValue = 1;
console.log("set value = " + powerValue)
}
});
pathfind.calculate();
console.log("second read = " + powerValue)
}
我知道powerValue确实被设置为1,因为我看到我的控制台上的“设定值= 1”。然而,我还请参阅 “第二读取= 0”
我知道已经问过类似的问题,但是其中很多似乎与异步功能有关。以异步类似,该功能似乎有某种分离范围,但它不完全是一个异步。
我已经做了研究,相信我,我尽力了!但是由于我对这个特定问题缺乏了解,我似乎找不到解决问题的方法。
任何帮助将不胜感激!
TLDR:我知道由于控制台日志记录而将powerValue设置为1,但在“第二次读取”时为0
答案 0 :(得分:0)
let pv = 0;
for (var i=0; i<5; i++) {
let path = function() {
pv = 1;
console.log("set value = " + pv);
};
path();
console.log("second read = " + pv);
}
只是想达到不使用磁带库。值,你会得到正确的,因为在这里运行的路径()的全局变量值设置为1。
答案 1 :(得分:0)
变量在自声明的执行功能是,默认情况下,只有提供给自执行功能中的代码。
如果你希望你的变量函数外被修改为好,不要使用自动执行功能。因此,您可以这样做,例如:
function is_path_null(path) {
if(path !== null) {
powerValue = 1;
console.log("set value = " + powerValue)
}
}
//...
let path = pathfind.findPath(coordX, coordY, powerSourceIndex[l][0], powerSourceIndex[l][1], is_path_null(path) {
//...
}
pathfind.calculate();
is_path_null(path);
console.log("second read = " + powerValue)