Javascript сокращенный тернарный оператор
Я знаю, что в PHP 5.3 вместо использования этого избыточного синтаксиса троичного оператора:
startingNum = startingNum ? startingNum : 1
... мы можем использовать сокращенный синтаксис для наших троичных операторов, где это применимо:
startingNum = startingNum ?: 1
И я знаю про троичный оператор в javascript:
startingNum = startingNum ? startingNum : 1
... но есть ли сокращение?
Ответы
Ответ 1
var startingNumber = startingNumber || 1;
Что-то вроде того, что вы ищете, где оно по умолчанию, если undefined?
var foo = bar || 1; // 1
var bar = 2;
foo = bar || 1; // 2
Кстати, это работает для множества сценариев, включая объекты:
var foo = bar || {}; // secure an object is assigned when bar is absent
Ответ 2
||
вернет первое значение правды, с которым он сталкивается, и поэтому может использоваться как оператор коалесцирования, аналогичный С# ??
startingNum = startingNum || 1;
Ответ 3
Да, есть:
var startingNum = startingNum || 1;
В общем, expr1 || expr2
работает следующим образом (как упоминалось документация):
Возвращает expr1
, если его можно преобразовать в true
; в противном случае возвращает expr2
. Таким образом, при использовании с Boolean
значениями ||
возвращает true
, если либо операнд true
; если оба они false
, возвращает false
.
Ответ 4
var startingNum = startingNum || 1;
В этом случае вы можете использовать оператор OR.
Ответ 5
startingNum = startingNum || 1
Если у вас есть условие с нулевым значением, например
startingNum = startingNum ? startingNum : null
вы можете использовать '& & amp;'
startingNum = startingNum && startingNum
Ответ 6
Приведенные выше ответы верны. В JavaScript следующее утверждение:
startingNum = startingNum ? otherNum : 1
можно выразить как
startingNum = otherNum || 1
Другой сценарий, который здесь не описан, - это если вы хотите, чтобы значение возвращало значение false, когда не соответствует Сокращение JavaScript для этого:
startingNum = startingNum ? otherNum : 0
Но это можно выразить как
startingNum = startingNum && otherNum
Просто хотел рассказать о другом сценарии на тот случай, если другие ищут более обобщенный ответ.
Ответ 7
Чтобы сделать троичный как:
boolean_condition ? true_result : false_result
в javascript вы можете сделать:
(boolean_condition && true_result ) || false_result;
Пример:
(true && 'green') || 'red';
=> "green"
(false && 'green') || 'red';
=> "red"