let errors = false;
// Check for errors in any single payload
for (let result of results) if (result.status === "error") {
errors = true;
errorMessage = result.message;
console.log(errors) // logs out "true"
} else {
errors = false;
}
console.log(errors) // logs out "false"
// If error exists, alert user
if (errors === true) {
console.log(errors);
alert('Error Requesting Monitor Data!\n'+errorMessage)
} else {
console.log(errors); // logs out "false"
}
JavaScript 新手,来自 Python/Scala。在上面的代码中,for 循环范围之外的错误永远不会修改为 true
。我对变量的范围和值的修改不理解什么?
最佳答案
你的循环基本上是无关紧要的。
由于您在循环的 else
部分中设置了 errors = false
,因此您实际上是在检查您测试的最后内容是一个错误。
您执行循环并将结果每次翻转为 true
或 false
。它最终得到一个描述最后一件事的值。
如果您的目标是测试集合中的“一个或多个”是否有错误,那么您需要删除 else 分支。
这样,它就会以 false
开始,如果出现错误,可能会翻转为 true
,但永远不会翻转回来。
关于Javascript 变量不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44951496/