3 回答

TA贡献1802条经验 获得超5个赞
严格来说,它们将产生相同的结果,但是如果将前一种情况用作其他条件的条件,则会得到不同的结果。这是因为在的情况下x && doSomething()
,doSomething()
将返回一个值以表示其成功。

TA贡献1829条经验 获得超4个赞
不,它们不相同。虽然if是语句,但AND运算符是表达式。
这意味着您可以将其结果用于其他表达式,而if语句则不能:
var result = x && doSomething();
但是,在您的情况下,两者具有相同的效果。使用更具可读性并更好地表示程序结构的代码;我建议使用if语句。

TA贡献1811条经验 获得超5个赞
简短答案:不可以。
长答案:
@Steve的A x && doSomething()是一个表达式,
而是if(x) doSomething();一个声明,
正如@Daniel Li和@Bergi所建议的那样,请考虑:
计算一个表达式(应该在这里返回一个值)。
声明了一条语句(不应该在这里返回值,请考虑副作用)。
为什么令人困惑?
JS允许我们写 ( thatExpression );
JS允许我们写 thatExpression;
两者都假设某种doNothingWithValueOf陈述。
如何选择?
您是否使用:
doSomething() 作为一个
表达,认为IsMyObjectWhatever()或者MyObjectComputedValue(),
或声明,认为 ModifyMyObject()
然后:您是否将其x && doSomething()用作表达式?
您最终会想到thisStatement( thatExpression );无处不在的想法,请考虑:
() 表达,
; 声明。
那我为什么要选择呢?
显而易见的是“它有效”。不代表“正确”。
如果不太明显,那么何时会有所作为:
只是认为()(()())()(); 可以是 对的,(;) 是 错的。
检查@wwaawaw Javascript:语句和表达式之间的区别?
或Expressions-vs-statements由Axel Rauschmayer发布
添加回答
举报