有人可以尝试向我解释为什么“ If”语句允许它通过,但是很明显,即使它只允许“ NEW”,您也可以看到我对象的属性在说“ EXISTING”。
var newChannalChecker = false;
singleMassiveGroup.forEach(singleGrop => {
if (!newChannalChecker && singleGrop.length) {
singleGrop.forEach(element => {
if (element["currentItemStatus"] === "NEW") {
newChannalChecker = true;
}
});
}
});
我不确定这是否有帮助,但是我尝试在其中放一些日志以检查发生了什么
var newChannalChecker = false;
singleMassiveGroup.forEach(singleGroup => {
if (!newChannalChecker && singleGroup.length) {
// singleGrop.filter(e => e.CurrentItemStatus === "NEW").map(e)
singleGroup.forEach(element1 => {
console.log("CurrentItemStatus: ", element1.CurrentItemStatus);
if (element1.CurrentItemStatus === "NEW") {
console.log(
"Entered CurrentItemStatus: ",
element1.CurrentItemStatus
);
newChannalChecker = true;
}
});
}
});
App.js:402 CurrentItemStatus:已存在
奇怪的是,它的值显示为“ EXISTING”,但它仍然位于if内
我尝试将鼠标悬停在显示“未定义Element1”的属性上
还有一件事,我注意到“ If”语句中的console.log没有打印任何内容,但仍将newChannalChecker更改为True
答案 0 :(得分:-1)
我看到了chrome devtools的一些类似问题,
做一件事
console.log(element["currentItemStatus"]
在if块内,
它应该给您正确的值。不仅NEW
答案 1 :(得分:-1)
我在那里没有发现任何问题。将鼠标悬停在调试元素上时,将从其他位置设置element["currentItemStatus"]
的值"EXISTING"
。
调试器工具正在显示该值。调试器工具会向您显示该变量的最新更新值。
这个简单的测试将满足您调试器工具的工作原理。
let abc = 1;
abc = 5;
debugger;
将鼠标悬停在abc
中的let abc
上,然后您会看到它的值为5而不是1。
这是另一个使用if条件的测试:
let nn = 1;
if(nn===1) { // hover here in nn, you'll see 'Nope!', but not 1
console.log('test passed'); // in fact, the condition is matched nn === 1
}
nn = 'Nope!';
debugger;
提示:打开开发人员工具,然后运行上面的代码段。