Posso escrever a if else
taquigrafia sem a else
?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
Percebi que colocar null
para o resto funciona (mas não faço ideia do porquê ou se é uma boa ideia).
Edit: Alguns de vocês parecem confusos por que eu me daria ao trabalho de tentar isso. Tenha certeza de que é pura curiosidade. Eu gosto de brincar com JavaScript.
var | var
sintaxe. Cuidado, pois é potencialmente difícil "ver", especialmente os ternários (IMO) sendo problemáticos. Use moderadamente.:)
foo = bar | cat;
, onde se o primeiro é falso? null ?, ele "cai" para o segundo. Eu só vi isso e não o uso.a || b
oua && b
, caso contráriob
, sempre será avaliado.Respostas:
Esta também é uma opção:
dosomething()
só será chamado sex==2
for avaliado como verdadeiro. Isso é chamado de curto-circuito .Não é comumente usado em casos como esse e você realmente não deve escrever um código como este. Encorajo essa abordagem mais simples:
Você deve escrever código legível o tempo todo; Se você estiver preocupado com o tamanho do arquivo, crie uma versão reduzida com a ajuda de um dos muitos compressores JS. (por exemplo, o compilador de fechamento do Google )
fonte
if (1 - 1 === 0) $('.woot').text('Woot!');
eu uso esse formulário o tempo todo com PHP, e agora que estou adotando o Coffeescript, também o uso no meu Javascript.if x==2 && doSomething() || doSomethingElse()
doSomething() if x === 2
. Não sinto falta de Ruby, mas sinto falta disso.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:
Portanto, para facilitar a leitura (porque o que você está fazendo é incomum) e porque evita o "outro" que você não deseja, sugiro:
fonte
Outra opção:
fonte
Se você não está fazendo o resto, por que não fazer:
fonte
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ê tiver em mente invocar um procedimento, é mais claro escrever isso usando if..else:
ou, no seu caso,
fonte
Pequena adição a esta linha muito antiga ..
Se your'e avaliar uma expressão dentro de um
for
/while
loop com um operador ternário, e quercontinue
oubreak
como resultado - você vai ter um problema porque amboscontinue
ebreak
não são expressões , eles são declarações sem qualquer valor.Isso produzirá
Uncaught SyntaxError: Unexpected token continue
Se você realmente deseja um one-liner que retorne uma declaração, use-o:
fonte
Tecnicamente, colocar nulo ou 0 ou apenas algum valor aleatório funciona (já que você não está usando o valor de retorno). No entanto, por que você está usando essa construção em vez da
if
construção? É menos óbvio o que você está tentando fazer quando escreve código dessa maneira, pois pode confundir as pessoas com o no-op (nulo no seu caso).fonte
Provavelmente o menor (com base no operador OR e sua precedência )
Mostrar snippet de código
fonte