Подтвердить что ты не робот

Javascript сокращенный тернарный оператор

Я знаю, что в PHP 5.3 вместо использования этого избыточного синтаксиса троичного оператора:

startingNum = startingNum ? startingNum : 1

... мы можем использовать сокращенный синтаксис для наших троичных операторов, где это применимо:

startingNum = startingNum ?: 1

И я знаю про троичный оператор в javascript:

startingNum = startingNum ? startingNum : 1

... но есть ли сокращение?

4b9b3361

Ответ 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"