Pergunta

Esta questão já tem uma resposta aqui:

O que isso pouco de código representa? Eu sei que é algum tipo de alternativa if sintaxe ...

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

Update:

O que é a necessidade para este tipo de codificação? Isso é mais eficiente ou apenas uma versão abreviada com a mesma eficiência?

Foi útil?

Solução

É a condicional operador, é equivalente a algo assim:

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

Mas eu acho que uma declaração de atribuição está faltando no código que você postou, como este:

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

A variável score será atribuído se pattern.Gotoccurance.score não é nulo:

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

Um padrão comum para fazer este tipo de atribuições 'valor padrão' em JavaScript é usar o operador OR lógico (||):

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

O valor da pattern.Gotoccurance.score será atribuído à variável score somente se esse valor não é Falsas (valores Falsas são false, null, undefined, 0, string ou NaN comprimento zero).

Caso contrário, se é '0' Falsas será atribuído.

Update: O desempenho será equivalente, você deve se concentrar na leitura, eu tento usar o operador ternário em expressões que são muito simples, e você também pode melhorar a formatação, dividindo-o em duas linhas para torná-lo mais legível:

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

questão relacionada:

Outras dicas

Esta é uma ternário operador, uma maneira shorthanded que fazer se declarações.

Se re-escrito, ele ficaria assim:

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

É o chamado operador ternário.

Respondendo à atualização pergunta "Por necessidade para este tipo de codificação?"

Você pode, por vezes, usar o operador ternário para reduzir a complexidade:

Por exemplo, eu tenho uma página web que precisava verificar se , pelo menos dois dos três campos de texto específicas tinham valores inseridos. O if / else lógica parecia muito feio, mas o operador ternário tornou um one-liner para determinar quantos campos foram preenchidos:

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

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

Esta solução parece muito elegante e fácil de ler do que algumas alternativas.

É ternário operador de operador / condicional.

Em matemática, a operação ternário é uma operação enária com n = 3. a operação ternário em um conjunto a toma qualquer dadas três elementos de a e combina-os de modo a formar um único elemento de a.

é uma forma abreviada de if..else

por exemplo. quer saber se um número é par ou não

// Usando if..else abordagem

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

// usando ternário

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

Mais uma variante é interruptor

// usando interruptor

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

Agora, se você tem um simples if..else condição para executar como o descrito, você pode ir em frente com ternário.

Mas se a verificação condicional torna-se complexa, ir tanto com if..else ou switch como a legibilidade será perdido no ternário

por exemplo. é fácil de executar mínimo ou máximo de dois números usando um operador ternário, mas torna-se desajeitado para encontrar o maior e segundo maior entre os 3 ou mais números e nem sequer é aconselhavel. É melhor usar if..else vez

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top