Bisakah saya menulis if else
steno tanpa else
?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
Saya perhatikan meletakkan null
untuk yang lain bekerja (tapi saya tidak tahu mengapa atau jika itu ide yang bagus).
Sunting: Beberapa dari Anda tampaknya bingung mengapa saya repot-repot mencoba ini. Yakinlah itu murni karena penasaran. Saya suka bermain-main dengan JavaScript.
var | var
sintaks. Hati-hati karena berpotensi sulit untuk "melihat", terutama (IMO) yang bermasalah. Gunakan hemat.:)
foo = bar | cat;
, di mana jika yang pertama salah? null ?, itu "jatuh" ke yang kedua. Saya hanya melihatnya, dan tidak menggunakannya.a || b
ataua && b
, kalau tidak,b
akan selalu dievaluasi.Jawaban:
Ini juga merupakan opsi:
dosomething()
hanya akan dipanggil jikax==2
dievaluasi true. Ini disebut hubungan arus pendek .Ini tidak umum digunakan dalam kasus seperti ini dan Anda benar-benar tidak boleh menulis kode seperti ini. Saya mendorong pendekatan yang lebih sederhana ini:
Anda harus menulis kode yang dapat dibaca setiap saat; jika Anda khawatir tentang ukuran file, buat saja versi yang diperkecil dengan bantuan salah satu dari banyak kompresor JS. (mis. Penyusun Penutupan Google )
sumber
if (1 - 1 === 0) $('.woot').text('Woot!');
Saya menggunakan formulir itu sepanjang waktu dengan PHP, dan sekarang saya mengadopsi Coffeescript, saya menggunakannya dalam Javascript saya juga.if x==2 && doSomething() || doSomethingElse()
doSomething() if x === 2
. Saya tidak merindukan Ruby, tetapi saya merindukannya.Apa yang Anda miliki adalah penggunaan operator ternary yang tidak biasa . Biasanya digunakan sebagai ekspresi, bukan pernyataan, di dalam beberapa operasi lain, misalnya:
Jadi, untuk keterbacaan (karena apa yang Anda lakukan tidak biasa), dan karena itu menghindari "yang lain" yang tidak Anda inginkan, saya akan menyarankan:
sumber
Pilihan lain:
sumber
Jika Anda tidak melakukan hal lain, mengapa tidak melakukannya:
sumber
Menggunakan
null
tidak masalah untuk salah satu cabang dari ekspresi ternary. Dan ekspresi ternary baik-baik saja sebagai pernyataan dalam Javascript.Sebagai masalah gaya, meskipun, jika Anda berpikir untuk mengajukan suatu prosedur, lebih jelas untuk menulis ini menggunakan if..else:
atau, dalam kasus Anda,
sumber
Tambahan kecil untuk utas yang sangat lama ini ..
Jika Anda mengevaluasi ekspresi di dalam
for
/while
loop dengan operator ternary, dan ingincontinue
ataubreak
sebagai hasilnya - Anda akan memiliki masalah karena keduanyacontinue
&break
bukan ekspresi , itu pernyataan tanpa nilai.Ini akan menghasilkan
Uncaught SyntaxError: Unexpected token continue
Jika Anda benar-benar menginginkan satu baris yang mengembalikan pernyataan, Anda dapat menggunakan ini sebagai gantinya:
sumber
Secara teknis, meletakkan nol atau 0, atau hanya beberapa nilai acak di sana berfungsi (karena Anda tidak menggunakan nilai balik). Namun, mengapa Anda menggunakan konstruk ini alih-alih
if
konstruk? Tidak terlalu jelas apa yang Anda coba lakukan ketika Anda menulis kode dengan cara ini, karena Anda dapat membingungkan orang dengan no-op (nol dalam kasus Anda).sumber
Mungkin terpendek (berdasarkan operator OR dan prioritasnya )
Tampilkan cuplikan kode
sumber