Javascript 为什么条件句使用&&;速度快了两倍

Javascript 为什么条件句使用&&;速度快了两倍,javascript,performance,Javascript,Performance,我今天搜索了很多东西,但是在我找到一些我在这里不知道的东西之后…所以我决定看看哪一个是最快的,这就是我所拥有的 &&比如果和条件a:b快两倍 是的。或者只是我的浏览器 你觉得这个怎么样,你觉得表演值得吗。我的意思是,如果你的应用程序开始运行快2倍。是否值得将编码样式更改为怪异的&s..您的代码片段做的事情不一样。JavaScript的逻辑和短路,因此(x='default')部分永远不会实际执行。您的代码的解释如下: (x == undefined) || (null && (

我今天搜索了很多东西,但是在我找到一些我在这里不知道的东西之后…所以我决定看看哪一个是最快的,这就是我所拥有的

&&
如果和条件a:b快两倍

是的。或者只是我的浏览器


你觉得这个怎么样,你觉得表演值得吗。我的意思是,如果你的应用程序开始运行快2倍。是否值得将编码样式更改为怪异的&s..

您的代码片段做的事情不一样。JavaScript的逻辑和短路,因此
(x='default')
部分永远不会实际执行。您的代码的解释如下:

(x == undefined) || (null && (x = 'default'))
由于
x==undefined
true
,因此永远不会执行OR的第二部分,因为无论第二部分的布尔值如何,整个表达式都将为true

如果添加括号,则第一个和第三个代码段(至少对我而言):


这是因为&&,在第一个表达式bool(未定义)=false和
false&&anything)=false的短路行为,如果
if
条件变为
&
,你的应用程序将无法以2倍的速度开始工作。这一行代码可能会更快,但它可能不会是2倍,而且总体上的差异会很小。你应该进一步澄清这个问题,因为我在点击链接之前没有意识到,Chrome和Firefox之间的顺序是相反的,所以我不会费心修改任何代码。感谢你捕捉到
(x==undefined | | null)&&(x='default')我认为这就是实际发生的情况。若x等于undefined或null,则返回true,这将导致执行右侧,即x='de..,以便您可以看到它是有效的。试试看。@MuhammadUmer:你的第一个例子没有做到这一点。执行它并查看
x
@MuhammadUmer的值:另外,
x==undefined | | null
不检查
x
是否为
undefined
null
。它首先检查
x==undefined
。如果这是
true
,它将返回
true
。如果它是
false
,将执行
|null
,您将返回
null
。对于我正在做的事情,它很可能是未定义的,但可能是null。但是,是的,我也觉得这意味着我正在检查这两种情况。但我实际上并不打算这么做。@MuhammadUmer:您需要使用
x==undefined | | x==null
来检查这两种情况。然而,当类型转换跳入时,
undefined==null
;因此,比较
x==undefined
x==null
将检测
null
undefined
(x == undefined || null) && (x = 'default')