Bagaimana saya bisa menggunakan if
pernyataan inline dalam JavaScript? Apakah ada else
pernyataan inline juga?
Sesuatu seperti ini:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
Bagaimana saya bisa menggunakan if
pernyataan inline dalam JavaScript? Apakah ada else
pernyataan inline juga?
Sesuatu seperti ini:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
Jawaban:
Anda tidak perlu jQuery. JavaScript sendiri akan melakukan ini.
var a = 2;
var b = 3;
var c = ((a < b) ? 'minor' : 'major');
The c
variabel akan minor
jika nilai true
, dan major
jika nilai false
.
Ini dikenal sebagai Operator Bersyarat (ternary).
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator
if (a < b) c = 'major';
Untuk menulis if
inline pernyataan, kode di dalamnya hanya boleh satu pernyataan:
if ( a < b ) // code to be executed without curly braces;
Ada operator ternary, seperti ini:
var c = (a < b) ? "a is less than b" : "a is not less than b";
0 < 1 : 5 : 120;
adalah pernyataan yang benar-benar valid. Sedikit tidak berguna kecuali Anda dibayar per baris.
if
pernyataan membosankan lama yang biasa dalam kasus seperti itu mungkin akan membuat kode Anda lebih mudah dibaca dan dipahami, dan kecil kemungkinannya untuk dipecahkan dengan perubahan selanjutnya.
Anda juga dapat memperkirakan suatu if / else dengan hanya menggunakan Logical Operator.
(a && b) || c
Di atas kira-kira sama dengan mengatakan:
a ? b : c
Dan tentu saja, kira-kira sama dengan:
if ( a ) { b } else { c }
Saya katakan secara kasar karena ada satu perbedaan dengan pendekatan ini, yaitu Anda harus tahu bahwa nilai b
akan dinilai benar, jika tidak, Anda akan selalu mendapatkannya c
. Pada dasarnya Anda harus menyadari bahwa bagian yang akan muncul if () { here }
sekarang adalah bagian dari kondisi yang Anda tempatkan if ( here ) { }
.
Di atas dimungkinkan karena perilaku JavaScripts melewati / mengembalikan salah satu nilai asli yang membentuk ekspresi logis, yang tergantung pada jenis operator. Bahasa-bahasa lain tertentu, seperti PHP, meneruskan hasil operasi yang sebenarnya yaitu benar atau salah, artinya hasilnya selalu benar atau salah; misalnya:
14 && 0 /// results as 0, not false
14 || 0 /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4, not true
true && '' /// results as ''
{} || '0' /// results as {}
Satu manfaat utama, dibandingkan dengan pernyataan normal jika, adalah bahwa dua metode pertama dapat beroperasi di sisi kanan argumen yaitu sebagai bagian dari tugas.
d = (a && b) || c;
d = a ? b : c;
if `a == true` then `d = b` else `d = c`
Satu-satunya cara untuk mencapai ini dengan standar jika pernyataan akan menduplikasi tugas:
if ( a ) { d = b } else { d = c }
Anda mungkin bertanya mengapa penggunaan hanya Logical Operator bukan Ternary operator , untuk kasus sederhana Anda mungkin tidak akan, kecuali jika Anda ingin memastikan a
dan b
berdua benar. Anda juga dapat mencapai kondisi rumit yang lebih ramping dengan operator Logical, yang dapat menjadi sangat berantakan dengan menggunakan operasi bersarang bersarang ... lalu lagi jika Anda ingin kode Anda mudah dibaca, tidak ada yang terlalu intuitif.
Dalam bahasa Inggris biasa, sintaks menjelaskan:
if(condition){
do_something_if_condition_is_met;
}
else{
do_something_else_if_condition_is_not_met;
}
Dapat ditulis sebagai:
condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;
condition ? true
true
false
dan ""
semua harus baik-baik saja untuk mengabaikan bagian yang lain.
2 == 2 ? doSomething()
akan sama dengan if (2 == 2) doSomething()
?
: false
atau : ""
harus ada karena javascript mengharapkan ini.
FYI, Anda dapat membuat operator bersyarat
var a = (truthy) ? 1 : (falsy) ? 2 : 3;
Jika logika Anda cukup kompleks, maka Anda dapat mempertimbangkan untuk menggunakan IIFE
var a = (function () {
if (truthy) return 1;
else if (falsy) return 2;
return 3;
})();
Tentu saja, jika Anda berencana untuk menggunakan logika ini lebih dari sekali, maka Anda harus merangkumnya dalam fungsi untuk menjaga hal-hal baik dan KERING.
Bukankah pertanyaannya pada dasarnya: dapatkah saya menulis yang berikut?
if (foo)
console.log(bar)
else
console.log(foo + bar)
jawabannya adalah, ya, terjemahan di atas akan diterjemahkan.
Namun, berhati-hatilah dengan melakukan hal berikut
if (foo)
if (bar)
console.log(foo)
else
console.log(bar)
else
console.log(foobar)
pastikan untuk membungkus kode ambigu dalam kurung kurawal karena hal di atas akan mengeluarkan pengecualian (dan permutasi yang sama akan menghasilkan perilaku yang tidak diinginkan.)