tag - w3schools javascript window




Omitindo a segunda expressão ao usar a abreviação if-else (5)

Posso escrever a abreviação 'if else' sem o else?

var x=1;

x==2 ? dosomething() : doNothingButContinueCode();   

Eu notei colocar null para o else funciona (mas eu não tenho idéia por que ou se é uma boa idéia).

Edit: Alguns de vocês parecem confusos porque eu me incomodei tentando isso. Tenha certeza de que é puramente por curiosidade. Eu gosto de brincar com JavaScript.


Esta também é uma opção:

x==2 && dosomething();

dosomething() só será chamado se x==2 for avaliado como verdadeiro. Isso é chamado de Short-circuiting .

Não é comumente usado em casos como este e você realmente não deveria escrever código como este. Eu encorajo esta abordagem mais simples:

if(x==2) dosomething();

Você deve escrever código legível em todos os momentos; Se você está preocupado com o tamanho do arquivo, basta criar uma versão reduzida dele com a ajuda de um dos muitos compressores JS. (por exemplo, o Closure Compiler do Google)


O que você tem é um uso bastante incomum do operador ternário . Geralmente é usado como uma expressão, não uma declaração, dentro de alguma outra operação, por exemplo:

var y = (x == 2 ? "yes" : "no");

Então, por legibilidade (porque o que você está fazendo é incomum), e porque evita o "else" que você não quer, eu sugiro:

if (x==2) doSomething();

Se você não está fazendo o resto, por que não:

if (x==2) doSomething();

Tecnicamente, colocar null ou 0, ou apenas algum valor aleatório, funciona (desde que você não esteja usando o valor de retorno). No entanto, por que você está usando essa construção em vez da construção if ? É menos óbvio o que você está tentando fazer quando escreve código dessa maneira, pois você pode confundir as pessoas com o não operacional (nulo no seu caso).


Usar null é bom para um dos ramos de uma expressão ternária. E uma expressão ternária é boa como uma declaração em Javascript.

Por uma questão de estilo, no entanto, se você está pensando em invocar um procedimento, é mais claro escrever isso usando if..else:

if (x==2) doSomething;
else doSomethingElse

ou, no seu caso,

if (x==2) doSomething;




shorthand