“JavaScript条件样式”;A&&;B | | C“;vs";A.B:C";

“JavaScript条件样式”;A&&;B | | C“;vs";A.B:C";,javascript,syntax,Javascript,Syntax,使用JavaScript条件样式是否有任何错误 cond1 && cond2 cond1 && cond2 || cond3 cond1 && cond2 || cond3 || cond4 而不是 cond1 ? cond2 : cond3 ? 第一个条件样式具有较短的语法和性能优势,但它可能会误导某些人认为 document.getElementById("a") && 1 // null or 1 返回与相同的结果 do

使用JavaScript条件样式是否有任何错误

cond1 && cond2
cond1 && cond2 || cond3
cond1 && cond2 || cond3 || cond4
而不是

cond1 ? cond2 : cond3
?

第一个条件样式具有较短的语法和性能优势,但它可能会误导某些人认为

document.getElementById("a") && 1 // null or 1
返回与相同的结果

document.getElementById("a") ? 1 : undefined // undefined or 1

你的想法?

是的,这是非常错误的。对于案例
cond1=true
cond2=false
cond3=true
,他们得到了不同的结果

它可能会误导某人认为
document.getElementById(“a”)和&1
-
null
1
-返回与
document.getElementById(“a”)相同的结果?1:未定义的
-
未定义的
1


是的,正如你所说,它们不一样。

两者都是正确的
A和
A?B:C
。使用最适合大小写和使用的代码样式模式。 在大多数情况下,
会导致不必要的代码执行,例如
a()中执行了2x次
a()?a():b()
vs 1x with
a()| b()
<代码>|
获胜

比如说

C || A + B  // is better than C ? C : A + B
C + A || B  // is better than C + A ? C + A : B
A() || B() || C // is better than A() ? A() : (B() ? B() : C)
A ? B : C || D || A   // is better than A ? B : (C ? C : (D ? D : A))
A === 1 || B < C || D // is better than A === 1 ? true : (B < C ? true : D)
C | A+B//比C好吗?C:A+B
C+A | | B//比C+A好吗?C+A:B
A()| B()| C//比A()好?A():(B()?B():C)
A.B:C | | D | | A/比A好吗?B:(C?C:(D?D:A))
A==1 | | B
你能给我们举个例子吗?对我来说,第一个更好,我看不出返回未定义的
有什么好处,这是你必须做的,但不是你真正想要的。您想要的是这个senetence
document.getElementById(“a”)?1
但这不是法律判决。。。因此,在一般情况下,您必须包括
未定义的
,任何性能优势都可以忽略不计,因此不值得考虑。就我个人而言,我不会担心语法的短促或性能优势,而是编写易于理解的代码。现在JS引擎执行的优化非常出色,但是不可读的代码也不容易维护。撇开它们的作用和含义的差异不谈,为什么您会认为三元运算符的性能较差?另外,
cond1&&cond2 | | cond3
实际上比三元版本长。不要坚持提到的情况,但要考虑所有可能的变化/情况。@Binyamin:当然,有些情况下两者都可以适用,但一般来说它们不一样,你应该选择你需要的一种。