Являются ли эти два идентичных?
Предположим, что у вас есть:
var x = true;
И у вас есть один из них:
x && doSomething();
или
if(x) doSomething();
Есть ли какой-либо различий между двумя синтаксисами? Я наткнулся на хороший кусочек сахара?
Являются ли эти два идентичных?
Предположим, что у вас есть:
var x = true;
И у вас есть один из них:
x && doSomething();
или
if(x) doSomething();
Есть ли какой-либо различий между двумя синтаксисами? Я наткнулся на хороший кусочек сахара?
x && doSomething()
, doSomething() вернет значение, чтобы обозначить его успех.		Нет, они не идентичны. Пока if является оператором, оператор AND является выражением.
Это означает, что вы можете использовать его результат в другом выражении, которое вы не можете с помощью if-statement:
var result = x && doSomething();
Тем не менее, в вашем случае оба эффекта имеют одинаковый эффект. Используйте тот, который более читабельен и лучше отражает вашу структуру программы; Я бы рекомендовал if-statement.
A, заявленный @Steve x && doSomething(), является выражением ,
тогда как if(x) doSomething(); является оператором ,
Как предложил @Даниэль Ли и @Берги, подумайте:
вычисляется выражение (предполагается вернуть значение здесь).
объявлен оператор (не), чтобы вернуть значение здесь, подумайте побочные эффекты > ).
( thatExpression );thatExpression;оба предполагают какой-то оператор doNothingWithValueOf.
Используете ли вы:
doSomething() как
IsMyObjectWhatever() или MyObjectComputedValue(),ModifyMyObject()И затем: используете ли вы x && doSomething() выражение ?
В итоге вы будете думать о чем-то вроде thisStatement( thatExpression );, подумайте:
() выражение,;.Если менее очевидно , когда, это будет иметь значение:
()(()())()(); может быть  справа, (;)  неправильно.В слове нет, два утверждения не равны, хотя в конкретных обстоятельствах вы представляете результат одинаковым.
 x && doSomething(); - выражение, сначала оценивается x, потому что это AND, и поскольку x является истинным, тогда вычисляется второй аргумент (doSomething()). В этом случае это означает, что метод выполняется. Если x были ложными, то doSomething() не будет выполняться, поскольку результат выражения не может быть правдой.
 if(x) doSomething(); - это утверждение. Значение x проверяется, и если оно истинно, выполняется область действия оператора if.
Я собрал этот fiddle, чтобы продемонстрировать (с небольшими изменениями).