为什么要经历if

时间:2018-09-26 18:29:13

标签: javascript reactjs

有人可以尝试向我解释为什么“ If”语句允许它通过,但是很明显,即使它只允许“ NEW”,您也可以看到我对象的属性在说“ EXISTING”。

enter image description here

 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内

enter image description here

enter image description here

我尝试将鼠标悬停在显示“未定义Element1”的属性上

还有一件事,我注意到“ If”语句中的console.log没有打印任何内容,但仍将newChannalChecker更改为True

2 个答案:

答案 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;

提示:打开开发人员工具,然后运行上面的代码段。