这两者是相同的吗?
假设你有:
var x = true;然后你可以选择其中的一种:
x && doSomething();或
if(x) doSomething();这两种语法有什么不同吗?我是不是偶然发现了一点不错的糖?
发布于 2012-10-01 03:22:29
严格地说,它们将产生相同的结果,但如果您使用前一种情况作为其他情况的条件,您将得到不同的结果。这是因为在x && doSomething()的情况下,doSomething()将返回一个值来表示它的成功。
发布于 2012-10-01 03:27:22
不,它们并不完全相同。if是一个语句,而AND运算符是一个表达式。
这意味着你可以在另一个表达式中使用它的结果,这在if语句中是做不到的:
var result = x && doSomething();然而,在您的情况下,两者具有相同的效果。使用可读性更好、更好地表示程序结构的语句;我建议使用if-语句。
发布于 2015-05-03 18:52:05
简短回答:No.
长长的答案:
@Steve x && doSomething()声明的是expression,
而if(x) doSomething();是语句,
正如@Daniel Li和@Bergi所建议的,思考:
为什么它令人困惑?
允许我们编写( thatExpression );
thatExpression;的
两者都假设有某种doNothingWithValueOf语句。
如何选择?
您是否使用:
doSomething()作为IsMyObjectWhatever()或MyObjectComputedValue(),ModifyMyObject()然后:您是否将x && doSomething()用作expression?
你最终会想像到处都是的thisStatement( thatExpression );,想想:
()表达式,;语句。那我为什么要选择呢?
- just think `()(()())()();` _can be_ **right**, `(;)` **is** _wrong_.
- check @wwaawaw [Javascript: difference between a statement and an expression?](https://stackoverflow.com/questions/12703214/javascript-difference-between-a-statement-and-an-expression?lq=1)
- or [expressions-vs-statements post by Axel Rauschmayer](http://www.2ality.com/2012/09/expressions-vs-statements.html)https://stackoverflow.com/questions/12664230
复制相似问题