Что такое нотация "?:" В JavaScript? - PullRequest
13 голосов
/ 24 июля 2010

Я нашел этот фрагмент кода в своих путешествиях при исследовании JSON:

var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

Я вижу все больше и больше обозначений ? и :. Я даже не знаю, как это называется, чтобы найти его! Может кто-нибудь указать мне хороший ресурс для этого? (кстати, я знаю, что означает !=).

Ответы [ 4 ]

24 голосов
/ 24 июля 2010

Это называется Условный (троичный) оператор .По сути, это сжатое if-else.

Итак, это:

var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

... то же самое, что и это:

var array;
if (typeof objArray != 'object') {
    array = JSON.parse(objArray);
} else {
    array = objArray;
}
12 голосов
/ 24 июля 2010

Это троичный условный оператор - в основном,

if (condition) {
   a = 4;
}
else {
   a = 5;
}

становится

a = condition ? 4 : 5;
11 голосов
/ 24 июля 2010

Это называется условным оператором :

condition ? expr1 : expr2

Если condition равно true, оператор возвращает значение expr1; в противном случае возвращается значение expr2.

2 голосов
/ 24 июля 2010

Просто прочитайте это так:

result = (condition) ? (true value) : (false value);

Поместите то, что вам нравится, в 3 оператора.

Как многие сравнивали его со структурой IF ... THEN, так оно и есть.

...