首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><boolean语句&& expression> ()是否与if(<boolean expression>)语句()相同?

<boolean语句&& expression> ()是否与if(<boolean expression>)语句()相同?
EN

Stack Overflow用户
提问于 2012-10-01 03:16:52
回答 5查看 1.6K关注 0票数 7

这两者是相同的吗?

假设你有:

代码语言:javascript
复制
var x = true;

然后你可以选择其中的一种:

代码语言:javascript
复制
x && doSomething();

代码语言:javascript
复制
if(x) doSomething();

这两种语法有什么不同吗?我是不是偶然发现了一点不错的糖?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-01 03:22:29

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

票数 7
EN

Stack Overflow用户

发布于 2012-10-01 03:27:22

不,它们并不完全相同。if是一个语句,而AND运算符是一个表达式。

这意味着你可以在另一个表达式中使用它的结果,这在if语句中是做不到的:

代码语言:javascript
复制
var result = x && doSomething();

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

票数 6
EN

Stack Overflow用户

发布于 2015-05-03 18:52:05

简短回答:No.

长长的答案:

@Steve x && doSomething()声明的是expression

if(x) doSomething();语句

正如@Daniel Li和@Bergi所建议的,思考:

  • 计算表达式(假定在此处返回值)。

  • a 语句已声明(假设不返回此处的值,请考虑side-effects )。

为什么它令人困惑?

允许我们编写( thatExpression );

  • JS允许我们编写thatExpression;

  • JS

两者都假设有某种doNothingWithValueOf语句。

如何选择?

您是否使用:

  • doSomething()作为
    • 表达式,考虑IsMyObjectWhatever()MyObjectComputedValue()
    • 或作为语句,考虑ModifyMyObject()

然后:您是否将x && doSomething()用作expression

你最终会想像到处都是的thisStatement( thatExpression );,想想:

  • ()表达式,
  • ;语句。

那我为什么要选择呢?

  • 显而易见的是“它是有效的”。并不代表“这是对的”。

  • 如果不那么明显的是而不是,那么就会有所不同:

代码语言:javascript
复制
- 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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12664230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档