为了账号安全,请及时绑定邮箱和手机立即绑定

<boolean expression> && statement()与if

<boolean expression> && statement()与if

慕妹3146593 2019-11-04 12:39:32
两者相同吗?假设您有:var x = true;然后,您可以选择以下任意一种:x && doSomething();要么if(x) doSomething();两种语法之间有什么区别吗?我偶然发现了很多糖吗?JavaScript 语法 if-statement 布尔 语法糖
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

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


查看完整回答
反对 回复 2019-11-04
?
浮云间

TA贡献1829条经验 获得超4个赞

不,它们不相同。虽然if是语句,但AND运算符是表达式。


这意味着您可以将其结果用于其他表达式,而if语句则不能:


var result = x && doSomething();

但是,在您的情况下,两者具有相同的效果。使用更具可读性并更好地表示程序结构的代码;我建议使用if语句。


查看完整回答
反对 回复 2019-11-04
?
四季花海

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发布


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 568 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号