Javascript if-else语句优化

Javascript if-else语句优化,javascript,Javascript,我想问一下JavaScriptif-else语句中的优化 if ( thisIsTrue ) printMe("someMessage"); 代码可以这样优化 thisIsTrue && printMe("someMessage"); 问题是thisIsTrue&&printMe(“someMessage”)的代码是什么仅在返回true的语句中有效 如果报税表是假的怎么办 这很难算是一种优化(就性能而言) 而且,这两种形式并不相同 后者是一种表达,而前者是一种陈述。这

我想问一下JavaScript
if-else
语句中的优化

if ( thisIsTrue )
    printMe("someMessage");
代码可以这样优化

thisIsTrue && printMe("someMessage");
问题是
thisIsTrue&&printMe(“someMessage”)的代码是什么仅在返回true的语句中有效


如果报税表是假的怎么办

这很难算是一种优化(就性能而言)

而且,这两种形式并不相同


后者是一种表达,而前者是一种陈述。

这几乎不是一种优化(就性能而言)

thisIsTrue ? printMe("is true") : printMe("is false");
而且,这两种形式并不相同


后者是一个表达式,而前者是一个语句。

您应该避免将代码变成对其他人或您未来的困惑。把你的条件和你的产出混在一起是没有好处的。它不会“优化”任何东西,并且在将来调试时会花费大量时间

thisIsTrue ? printMe("is true") : printMe("is false");

我认为你应该多说而不是少说。

你应该避免把你的代码变成别人或你未来的困惑。把你的条件和你的产出混在一起是没有好处的。它不会“优化”任何东西,并且在将来调试时会花费大量时间


我认为你应该多说而不是少说。

虽然这不是优化,也不是建议,但我会解释细节

在操作数组合中,如
a和&B
1st
将执行
操作数A
,如果
返回true
则执行
第二个操作数
,否则将终止,因为如果
1st操作数
true
结果将取决于
第二个操作数
,否则如果
1st
false
result
肯定会是
false
,而不管第二个操作数是什么,因此它不会执行第二个操作数。所以

true && alert("someMessage"); will show alert 

结合以上两种,你可以写如下

condition ? alert("someMessage") : alert("someMessage.....");

小提琴:

虽然这不是优化,也不是建议,但我会解释细节

在操作数组合中,如
a和&B
1st
将执行
操作数A
,如果
返回true
则执行
第二个操作数
,否则将终止,因为如果
1st操作数
true
结果将取决于
第二个操作数
,否则如果
1st
false
result
肯定会是
false
,而不管第二个操作数是什么,因此它不会执行第二个操作数。所以

true && alert("someMessage"); will show alert 

结合以上两种,你可以写如下

condition ? alert("someMessage") : alert("someMessage.....");
小提琴:

如果您有一系列If-Then-Else语句,您应该尽最大努力从最有可能到最不可能的顺序组织它们。通过这种方式,程序不必遍历所有不太可能的条件,就可以得到可能的条件,这些条件将被更频繁地调用

一种常用的策略是用Switch语句替换If-Then-Else语句,以避免在大量简单条件语句中忽略任何开销。这是一个很难获得资格的比赛。性能差异很大,尽管您几乎总是会有一些改进,即使是很小的改进。一如既往,正确的代码设计更为重要。查看开关是否良好,如果其他

如果您有一系列If-Then-Else语句,您应该尽最大努力从最有可能到最不可能的顺序组织它们。通过这种方式,程序不必遍历所有不太可能的条件,就可以得到可能的条件,这些条件将被更频繁地调用

一种常用的策略是用Switch语句替换If-Then-Else语句,以避免在大量简单条件语句中忽略任何开销。这是一个很难获得资格的比赛。性能差异很大,尽管您几乎总是会有一些改进,即使是很小的改进。一如既往,正确的代码设计更为重要。查看开关是否良好,如果其他


呢!这是false&&printMe(“someMessage”)
。然而,这并不是真正的优化;它所做的只是使代码更难阅读。我将使用您的第一个示例,并添加大括号。那么
呢!这是false&&printMe(“someMessage”)
。然而,这并不是真正的优化;它所做的只是使代码更难阅读。我会用你的第一个例子,并加上大括号。+1虽然我认为更多的罗嗦永远不是正确的目标,但更清晰是正确的。事实上,详细性根本不是程序所需要的属性(简单简洁的程序非常棒),但当必须在清晰性和详细性之间做出选择时,清晰性总是获胜的。请注意,一些JS压缩器会自动将if语句转换为
a&&b
a | b
a?b:c
中的一个(像uglifyjs),进一步否定了像这样编写代码的需要“因为你可以”.还要注意的是,在现代浏览器中,正常的if语句比上述任何语句都要快。这就是我的意思……我并不是建议任何人都应该不遗余力地延长程序的长度,但是如果你在将你的I++插入一个非常聪明的位置之间左右为难,你肯定这是你最后一次在需要之前使用I++了增量,我愿意用现金支付,这最终会咬你的屁股。把它放在自己的线上。未来你会感谢你的。+1虽然我认为更多的冗长永远不是正确的目标,但更清晰才是。事实上,冗长根本不是程序想要的属性(简单简洁的程序非常棒),但当必须选择m时