Javascript сокращенный троичный оператор - PullRequest
82 голосов
/ 16 января 2012

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

startingNum = startingNum ? startingNum : 1

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

startingNum = startingNum ?: 1

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

startingNum = startingNum ? startingNum : 1

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

Спасибо, ребята!

Ответы [ 7 ]

137 голосов
/ 16 января 2012
var startingNumber = startingNumber || 1;

Что-то вроде того, что вы ищете, где по умолчанию, если оно не определено?

var foo = bar || 1; // 1
var bar = 2;
foo = bar || 1;     // 2

Кстати, это работает для многих сценариев, включая объекты:

var foo = bar || {}; // secure an object is assigned when bar is absent
23 голосов
/ 16 января 2012

|| вернет первое истинное значение, с которым он столкнется, и поэтому может использоваться как оператор объединения, аналогично C # ??

startingNum = startingNum || 1;
11 голосов
/ 16 января 2012

Да, есть:

var startingNum = startingNum || 1;

Как правило, expr1 || expr2 работает следующим образом (как указано в документации ):

Возвращает expr1, если его можно преобразовать в true; в противном случае возвращает expr2. Таким образом, при использовании со значениями Boolean, || возвращает true, если любой из операндов равен true; если оба false, возвращает false.

1 голос
/ 12 января 2018
startingNum = startingNum || 1

Если у вас есть условие с нулевым значением, например

startingNum = startingNum ? startingNum : null

вы можете использовать '&&'

startingNum = startingNum && startingNum
1 голос
/ 16 января 2012
var startingNum = startingNum || 1;

В этом случае вы можете использовать оператор ИЛИ.

0 голосов
/ 26 января 2018

Чтобы сделать троичный вид:

boolean_condition ? true_result : false_result

в javascript, вы можете сделать:

(boolean_condition && true_result ) || false_result;

Пример:

(true && 'green') || 'red';
=> "green"
(false && 'green') || 'red';
=> "red"
0 голосов
/ 10 января 2018

Ответы выше верны. В JavaScript следующее утверждение:

startingNum = startingNum ? otherNum : 1

можно выразить как

startingNum = otherNum || 1

Другой сценарий, который здесь не рассматривается, - это если вы хотите, чтобы значение возвращало значение false, когда не совпадает. Сокращение JavaScript для этого:

startingNum = startingNum ? otherNum : 0

Но это можно выразить как

startingNum = startingNum && otherNum

Просто хотел рассказать о другом сценарии на тот случай, если другие ищут более обобщенный ответ.

...