Javascript if语句计算为false,但仍然运行(仅限Safari)

时间:2017-08-30 12:33:06

标签: javascript debugging safari logic

The if-statement

这个if语句是假的,正如你从Safari调试器的截图中看到的那样。但正如您也可以通过绿线看到的那样,它仍然会像声明一样执行。

仅在Safari中发生这种情况,而Chrome和Firefox都按预期工作。

为什么会这样?可能是因为我们遇到了某种错误?

简化后,if语句基本上是if( true && (false || false))



var div = document.querySelector('div');
var type = "first";
var subtype = "second";

if (div.dataset.type == "first" && (!div.dataset.subtype || div.dataset.subtype == subtype)) {
  div.innerText = 'Should never run'
} else div.innerText = 'Works as expected';

<div data-type="first" data-subtype="none"></div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

if 条件下,考虑将“ == ”更改为“ === ”。在javascript中,比较在类型强制之后发生。