Foi dito claramente, embora a opinião não obstante, que os colchetes em uma if
declaração de linha única não sejam ideais para manutenção e legibilidade.
Mas e isso?
if (lemons) { document.write("foo gave me a bar"); }
É ainda mais compactado e, se expandido, os colchetes não serão esquecidos. Existem problemas flagrantes e, se não, quais são as considerações? Eu sinto que ainda é muito legível, pelo menos tanto quanto um operador ternário de qualquer maneira. Parece-me que os operadores ternários não são tão sugeridos devido à legibilidade, embora eu ache que essa conclusão não seja tão unânime.
O gêmeo maligno em mim quer sugerir isso, embora a sintaxe obviamente não seja para isso e provavelmente seja apenas uma má idéia.
(syntax) ? document.write("My evil twin emerges"): "";
javascript
if-statement
David Hobs
fonte
fonte
document.write("My evil twin emerges") if lemons
variable = (condition) ? true-value : false-value;
.) Boa sorte.Respostas:
Vi o comportamento em curto-circuito do
&&
operador usado para conseguir isso, embora as pessoas que não estão acostumadas a isso possam achar difícil ler ou até chamá-lo de antipadrão:Pessoalmente, usarei frequentemente linha única
if
sem colchetes, assim:Se precisar adicionar mais instruções, colocarei as instruções na próxima linha e adicionarei colchetes. Como meu IDE faz recuo automático, as objeções de manutenção a essa prática são discutíveis.
fonte
Eu uso assim:
fonte
alert(lemons?"please give me a lemonade":"then give me a beer")
Você pode usar este formato, que é comumente usado em PHP:
fonte
lemon
.document.write(lemon ? "foo gave me a bar" : "if condition is FALSE");
:)Essa linha é muito mais limpa.
Eu prefiro isso. espero que ajude alguém
fonte
pode usar isso,
explicação: se
lemons
existir, dê-me umaalert("please give me a lemonade")
else
alert("then give me a beer")
fonte
lemons? alert("please give me a fancy beer with a lemon wedge in it"): alert(please give me a beer")
FTFY// Outro exemplo simples
fonte
var a = 11; alert(a === 10);
?alert(a === 10 ? "true" : "false")
alert(a===10)
como Manu disse.Como muitas pessoas disseram, se você está procurando uma linha 1 real, se:
é preferível. No entanto, se você está procurando fazer um if / else, então ternário é seu amigo (e também super legal):
ALÉM DISSO:
No entanto, eu vi um exemplo muito legal. Grita para @ Peter-Oslson por &&
Por fim, não é uma instrução if, mas executar coisas em um loop com um map / reduzir ou Promise.resolve () também é divertido. Gritos para @brunettdan
fonte
Como já foi afirmado, você pode usar:
&& estilo
ou
estilo sem suporte
retorno de curto-circuito
Se, no entanto, você deseja usar a
if
instrução de uma linha para causar um curto-circuito em uma função, precisará usar a versão sem colchetes da seguinte forma:Como
vai te dar uma
SyntaxError: Unexpected keyword 'return'
fonte
lemons
(se for falsey) - você só quer retornar "foo deu-me barra" quandolemons
é verdade.Eu já vi muitas respostas com muitos votos defendendo o uso do operador ternário. O ternário é ótimo se: a) você tem uma opção alternativa eb) está retornando um valor bastante simples a partir de uma condição simples. Mas...
A pergunta original não tinha alternativa, e o operador ternário com apenas uma única ramificação (real) obriga a retornar uma resposta confusa.
lemons ? "foo gave me a bar" : "who knows what you'll get back"
Eu acho que a variação mais comum é
lemons ? 'foo...' : ''
e, como você saberá lendo uma infinidade de artigos para qualquer idioma em true, false, truthy, falsey, null, nil, nil, blank, empty (with our without?), Você está entrando um campo minado (embora um campo minado bem documentado).Assim que qualquer parte do ternário se complica, é melhor ter uma forma mais explícita de condicional.
Um longo caminho para dizer que estou votando
if (lemons) "foo"
.fonte
Isso também pode ser feito usando uma única linha com
while
loops eif
assim:Também funciona com
while
loops.fonte
Exemplo em funções de seta:
Promessas:
De outra forma:
Se for apenas uma condicional simples, prefiro usar if (value) sempre que possível, porque a palavra if no início da declaração diz mais sobre o que está acontecendo do que parênteses e pontos de interrogação.
fonte
Mesmo atribuir operação também podemos fazer com colchetes
fonte