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 вместо