Javascript 变量不变

标签 javascript ecmascript-6

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,因此您实际上是在检查您测试的最后内容是一个错误。

您执行循环并将结果每次翻转为 truefalse。它最终得到一个描述最后一件事的值。

如果您的目标是测试集合中的“一个或多个”是否有错误,那么您需要删除 else 分支

这样,它就会以 false 开始,如果出现错误,可能会翻转为 true,但永远不会翻转回来。

关于Javascript 变量不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44951496/

相关文章:

javascript - NestJS 在拦截器中设置 HttpStatus

javascript - 未捕获的类型错误 : Function is not a function

javascript - eslint object-curly-newline 冲突更漂亮的多行基本原理

javascript - Reactjs 测试 api 调用

javascript - “箭头功能”和“功能”是否等效/可互换?

javascript - React从子组件访问父组件的dom节点

javascript - 简单的检索和赋值 getter 和 setter 在 JavaScript 中有用吗?

javascript - 如何将对象传递给 Mocha 测试

Javascript:在现有复选框旁边添加额外的复选框

javascript - jquery ui slider 在单击和拖动时不会被禁用