Javascript if语句的计算结果为false,但仍在运行(仅限Safari)

Javascript if语句的计算结果为false,但仍在运行(仅限Safari),javascript,debugging,safari,logic,Javascript,Debugging,Safari,Logic,从Safari调试器的屏幕截图中可以看出,if语句是错误的。但是,正如您也可以通过绿线看到的,它仍然像语句是真的一样执行 这种情况只发生在Safari中,而Chrome和Firefox都能正常工作 为什么会这样?可能是我们遇到了某种错误吗 简化后,if语句基本上是if(true&&(false | | false)) var div=document.querySelector('div'); var type=“first”; var subtype=“第二”; if(div.dataset

从Safari调试器的屏幕截图中可以看出,if语句是错误的。但是,正如您也可以通过绿线看到的,它仍然像语句是真的一样执行

这种情况只发生在Safari中,而Chrome和Firefox都能正常工作

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

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

var div=document.querySelector('div');
var type=“first”;
var subtype=“第二”;
if(div.dataset.type==“first”&(!div.dataset.subtype | | div.dataset.subtype==subtype)){
div.innerText='不应运行'
}else div.innerText='按预期工作'

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

啊,Safari,新的Internet Explorer。黑客的东西^^你确定这条线在走吗?我猜这只是调试器高亮显示中的一个小故障。分别:您悬停在什么位置以获得该
错误
?请使用堆栈片段(
[]
工具栏按钮)使用runnable更新您的问题,以演示问题,这样我们就可以自己查看它了。除此之外,这更可能是观察错误,而不是Safari JavaScript表达式评估中的基本错误。请参阅:。@T.J.Crowder是的,它不仅在调试器中运行,而且在页面本身上运行。我将整个表达式悬停以获得false,它基本上是
if(true&&(false | | false))
我认为OP理解抽象等式比较算法。除此之外,我看不到任何问题,并且在
div.innerText='周围用大括号括起来的
div.innerText='按预期工作',所以。