JavaScript tek satırlık 'if' ifadesi - en iyi sözdizimi, bu bir alternatif mi?
Açıkça belirtilmiş, yine de görüş olsa da, tek satırlık if ifadesinde süslü parantezlerden vazgeçmenin bakım ve okunabilirlik açısından ideal olmadığı.
Peki ya bu ne olacak?
if (lemons) { document.write("foo gave me a bar"); }
Daha da sıkıştırılmış ve genişletilirse, süslü parantezler unutulmayacaktır. Herhangi bir bariz sorun var mı, yoksa yoksa hangi hususlar göz önünde bulundurulmalı? En azından bir ternary operatör kadar okunaklı olduğunu hissediyorum. Bana öyle geliyor ki, ternary operatörler okunabilirlik açısından o kadar önerilmiyor, ancak bu sonucun tam anlamıyla birleşmiş bir görüş olmadığına inanıyorum.
İçimdeki kötü ikiz bunu önermemi istiyor, her ne kadar sözdizimi açıkça bunun için tasarlanmamış olsa da ve muhtemelen sadece kötü bir fikir.
(syntax) ? document.write("My evil twin emerges"): "";
Cevap #1
Bunu başarmak için kullanılan && operatörünün kısa devre davranışını gördüm, ancak buna alışık olmayan insanlar bunu okumakta zorlanabilir veya hatta bir anti-pattern olarak adlandırabilir:
lemons && document.write("foo gave me a bar");
Şahsen, genellikle tek satırlık if bloklarını süslü parantez kullanmadan şöyle kullanırım:
if (lemons) document.write("foo gave me a bar");
Daha fazla ifade eklemem gerekirse, ifadeleri bir sonraki satıra koyar ve parantez eklerim. IDE'm otomatik girinti yaptığı için, bu uygulamaya yönelik sürdürülebilirlik itirazları geçersizdir.
Cevap #2
Bunu şöyle kullanıyorum:
alert(lemons ? "please give me a lemonade" : "then give me a beer")
Cevap #3
Daha önce de belirtildiği gibi, şunu kullanabilirsiniz:
&& stil
lemons && document.write("foo gave me a bar");
veya
parantezsiz stil
if (lemons) document.write("foo gave me a bar");
kısa devre dönüş
Ancak, eğer bir fonksiyonu kısaltmak için tek satırlık if ifadesini kullanmak isterseniz, şu şekilde parantezsiz versiyonunu tercih etmeniz gerekir:
if (lemons) return "foo gave me a bar";
olarak
lemons && return "foo gave me a bar"; // does not work!
size bir SyntaxError: Unexpected keyword 'return' verecek
Cevap #4
PHP'de yaygın olarak kullanılan bu formatı kullanabilirsiniz:
(lemon) ? document.write("foo gave me a bar") : document.write("if condition is FALSE");
Cevap #5
bunu kullanabilir
lemons ? alert("please give me a lemonade") : alert("then give me a beer");
açıklama: eğer lemons doğruysa alert("lütfen bana bir limonata ver"), değilse alert("o zaman bana bir bira ver")
Cevap #6
Bu bir satır çok daha temiz.
if(dog) alert('bark bark');
Bunu tercih ediyorum. Umarım birine yardımcı olur.
Cevap #7
Birçok kişinin söylediği gibi, gerçek bir tek satırlık if then arıyorsanız:
if (Boolean_expression) do.something();
tercih edilir. Ancak, eğer bir if/else yapmak istiyorsanız, üçlü operatör arkadaşınızdır (ve ayrıca süper havalıdır):
(Boolean_expression) ? do.somethingForTrue() : do.somethingForFalse();
AYRICA :
var something = (Boolean_expression) ? trueValueHardware : falseATRON;
Ancak, çok havalı bir örnek gördüm. && için @Peter-Oslson'a selamlar
(Boolean_expression) && do.something();
Son olarak, bu bir if deyimi değil, ancak bir döngüde şeyler yapmak ya map/reduce ile ya da Promise.resolve() ile de eğlenceli. @brunettdan'a selamlar
Cevap #8
// Başka bir basit örnek
var a = 11;
a == 10 ? alert("true") : alert("false");
Cevap #9
(i === 0 ? "true" : "false")
