猿问

<boolean expression> && statement()与if

两者相同吗?


假设您有:


var x = true;

然后,您可以选择以下任意一种:


x && doSomething();

要么


if(x) doSomething();

两种语法之间有什么区别吗?我偶然发现了很多糖吗?


JavaScript 语法 if-statement 布尔 语法糖


慕妹3146593
浏览 569回答 3
3回答

慕后森

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

浮云间

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

四季花海

简短答案:不可以。长答案:@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发布
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答