if 块中这些代码之间的差异

  • 本文关键字:之间 代码 if javascript
  • 更新时间 :
  • 英文 :


我在这里得到了预期的结果。

var modeObj = {};
array.forEach(num => {
if (!modeObj[num])
modeObj[num] = 0;
modeObj[num]++;
});

我在这里得到一个空的结果。

var modeObj = {};
array.forEach(num => {
if (!modeObj[num]) {
modeObj[num] = 0;
}else {
modeObj[num]++;
}
});

上面的代码与下面的代码有何不同?我在 if 条件中缺少一些概念。

当你有if/else时 - 只有当if的值为 false 时,才会计算else块内的行。

在您的第一个示例中 - 无论 if 是否有效,第二行每次都会运行。

如果没有括号 - 仅计算下一行(if之后)。
您的第一个示例实际上如下:

var modeObj = {};
array.forEach(num => {
if (!modeObj[num]) {
modeObj[num] = 0;
}
modeObj[num]++;
});

如您所见 - 每次都会评估modeObj[num]++;(不仅当if为真时)。

第一个代码 if 条件没有{}。因此,无论 if 条件的结果如何,都只执行第一行,并且执行行modeObj[num]++;

在第二个代码中,您添加了 else。

你在条件和第二个代码片段之外if增加了modeObj[num]++。它应该是这样的:

var modeObj = {};
array.forEach(num => {
if (!modeObj[num]) {
modeObj[num] = 0;
modeObj[num]++;
} else {
// do something
}
});

最新更新