<boolean expression> && statement()与if(<boolean expression>)语句()相同吗?

wwa*_*waw 5 javascript syntax if-statement boolean syntactic-sugar

两个相同吗?

假设你有:

var x = true;
Run Code Online (Sandbox Code Playgroud)

然后你有一个:

x && doSomething();
Run Code Online (Sandbox Code Playgroud)

要么

if(x) doSomething();
Run Code Online (Sandbox Code Playgroud)

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

Dan*_* Li 6

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


Ber*_*rgi 6

不,他们并不完全相同.虽然if是一个陈述,但AND运算符是一个表达式.

这意味着您可以在其他表达式中使用其结果,而不能使用if语句:

var result = x && doSomething();
Run Code Online (Sandbox Code Playgroud)

然而,在你的情况下,两者都有相同的效果.使用更易读的,更好地代表您的程序结构; 我推荐if语句.