JavaScript, если альтернативный

Что представляет собой этот бит кода? Я знаю это своего рода альтернативный синтаксис if...

pattern.Gotoccurance.score != null ? pattern.Gotoccurance.score : '0'

Update:

Что нужно для такого рода кодирования? Является ли это более эффективной или просто сокращенной версией с той же эффективностью?

Ответы

Ответ 1

Это условный оператор, это эквивалентно примерно так:

if (pattern.Gotoccurance.score != null) {
  pattern.Gotoccurance.score;
} else {
  '0';
}

Но я думаю, что в отправленном вами коде отсутствует оператор присваивания, например:

var score = pattern.Gotoccurance.score !=null ? pattern.Gotoccurance.score : '0';

Переменная score будет назначаться, если pattern.Gotoccurance.score не равно null:

var score;
if (pattern.Gotoccurance.score != null) {
  score = pattern.Gotoccurance.score;
} else {
  score = '0';
}

Общим шаблоном для выполнения подобных присвоений по умолчанию в JavaScript является использование логического оператора OR (||):

var score = pattern.Gotoccurance.score ||  '0';

Значение pattern.Gotoccurance.score будет присваиваться переменной score только в том случае, если это значение не является ложным (значения ложности false, null, undefined, 0, строка нулевой длины или NaN).

В противном случае, если ему будет присвоен фальшивый '0'.

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

var status = (age >= 18) ? "adult"
                         : "minor";

Похожие вопросы:

Ответ 2

Это тернарный оператор, сокращенный способ делать, если инструкции.

Если переписано, оно будет выглядеть так:

if (pattern.Gotoccurance.score != null) {
   return pattern.Gotoccurance.score;
} else {
   return '0';
}

Ответ 3

Он называется тернарным оператором.

Ответ 4

Ответ на вопрос "Зачем нужен такой вид кодирования?"

Иногда вы можете использовать тернарный оператор для уменьшения сложности:

Например, у меня есть веб-страница, в которой необходимо проверить, что по крайней мере два из трех конкретных текстовых полей имели введенные значения. Логика if/else выглядела довольно уродливой, но тернарный оператор сделал ее одним слоем, чтобы определить, сколько полей было заполнено:

var numberFilledInFields = ( (firstName.length > 0 ? 1 : 0) +
                     (lastName.length > 0 ? 1 : 0) +
                     (zipCode.length > 0 ? 1 : 0) );

if (numberFilledInFields < 2)
{
    validation = false;
    return;
}

Это решение выглядит довольно элегантно и легко читается, чем некоторые альтернативы.

Ответ 5

Это тернарный оператор/условный оператор.

В математике, тройная операция является n-арной операцией с n = 3. Тройная операция на множестве A принимает любой заданный три элемента A и объединяет их для образования одного элемента A.

это короткая ручная форма if..else

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

//Использование if..else подхода

function CheckEvenOdd()
{
    var number = 2;
    if(number %2 == 0) alert("even");else alert("odd");
}

//используя тернарный

function CheckEvenOdd()
{
    var number = 2;
    alert((number %2 == 0)?"even":"odd");
}

Еще один вариант - это переключатель

//используя переключатель

function CheckEvenOdd()
{
    var number = 2;
    switch(number %2)
    {
        case 0:alert("even");break;
        default:alert("odd");break;
    }
}

Теперь, если у вас есть простое условие if..else для выполнения, как описано выше, вы можете продолжить тройной.

Но если условная проверка становится сложной, пойдите либо с if..else, либо с переключателем, так как читаемость будет потеряна в тернарном

например. легко выполнить минимум или максимум двух чисел, используя тернарный оператор, но становится неуклюжим, чтобы найти наибольшее и второе по величине среди 3 или более чисел и даже не рекомендуется. Лучше использовать if..else вместо