Saya sering melihat banyak pernyataan ekspresi bersyarat singkat dalam kode orang hebat di mana -mana. Setelah membaca beberapa artikel yang memperkenalkan aspek ini, saya pikir 3 cara 2 mengatakan jika artikel ini (http://www.thomasfrank.se/3_ways_2_say_if.html) tidak buruk. Dalam artikel ini, penulis merangkum karakteristik dan penggunaan ekspresi tradisional jika ... lain ..., ?:, &&/||, dan merangkumnya sebagai berikut:
1. Jika ... lain struktur
// Atur r ke 0 atau 1 var r = math.floor (2*math.random ()) // atur a, b dan c ke "kecil" jika r == 0 mengaturnya ke "besar" // menggunakan tiga teknik berbeda // metode 1: jika lain var a; if (r == 0) {a = "kecil"} else {a = "Big"}; // Metode 2: operator bersyarat var b = r == 0? "Kecil": "Besar"; // metode 3: dan/atau operator var c = r == 0 && "kecil" || "besar"; // Periksa nilai -nilai peringatan variabel kami (r+""+a+""+b+""+c);2. Jika ... lain jika ... lain struktur
// Atur r ke 0,1,2 atau 3 var r = math.floor (4*math.random ()) // set a, b dan c ke "nada", "kecil", "besar" dan "besar" // tergantung pada nilainya atau r menggunakan tiga teknik berbeda // metode 1: jika .. lain jika ... lain var a; if (r == 0) {a = "nada"} lain jika (r == 1) {a = "kecil"} lain jika (r == 2) {a = "besar"} else {a = "besar"}; // Metode 2: operator bersyarat var b = r == 0? "nada": r == 1? "Kecil": r == 2? "Besar": "besar"; // metode 3: dan/atau operator var c = r == 0 && "nada" || r == 1 && "kecil" || r == 2 && "Besar" || "sangat besar"; // Periksa nilai -nilai peringatan variabel kami (r+""+a+""+b+""+c);3. Jalankan fungsinya
// atur r ke 0,1,2 atau 3 var r = math.floor (4*math.random ()) // variabel global x dan empat fungsi kami var x = ""; nada = function () {x+= "nada!"}; small = function () {x+= "Small!"}; Big = function () {x+= "Big!"}; besar = fungsi () {x+= "besar!"}; // Panggil fungsi tertentu tergantung pada nilai r // menggunakan tiga teknik berbeda // metode 1: if .. lain jika ... lain jika ... lain jika (r == 0) {nada ()} lain jika (r == 1) {small ()} lain jika (r == 2) {Big ()} else {besar ()}; // Metode 2: Operator bersyarat R == 0? nada (): r == 1? Small (): r == 2? Big (): besar (); // Metode 3: dan/atau operator r == 0 && (nada () || true) // nada () fungsi tidak selalu mengembalikan true. Untuk memastikan logika berikutnya atau || Penilaian tidak dieksekusi, nilai sebenarnya perlu dikembalikan, sama di bawah ini || r == 1 && (small () || true) || r == 2 && (BIG () || true) || sangat besar(); // periksa nilai -nilai peringatan variabel kami (r+""+x);4. Jalankan kode
// atur r ke 0,1,2 atau 3 var r = math.floor (4*math.random ()) // variabel global x var x = ""; // mengeksekusi kode yang berbeda tergantung pada nilai r // menggunakan tiga teknik berbeda // metode 1: if .. lain jika ... lain jika (r == 0) {x+= "nada!"} Lain jika (r == 1) {x+= "kecil!"} Lain jika (r == 2) {x+= "besar!" // Metode 2: Operator bersyarat R == 0? function () {x+= "nada!"} (): r == 1? function () {x+= "Small!"} (): r == 2? function () {x+= "Big!"} (): function () {x+= "besar!"} (); // Method 3: And/or operators r==0 && (function(){x+="Nada! "}() || true) // Someone pointed out in the comment that the anonymous functions here are unnecessary, and this is the case when there is only one executable code, but if there is multiple code to be executed, the anonymous functions are still good || r == 1 && (function () {x+= "Small!"} () || true) || r == 2 && (function () {x+= "Big!"} () || true) || function () {x+= "besar!"} (); // periksa nilai -nilai peringatan variabel kami (r+""+x);Dalam artikel online ini, fokus penulis adalah pada pendekatan kode, jadi secara umum, penulis lebih suka menggunakan ?: operator, dan merasa bahwa && || Metode perlu mengetik beberapa huruf lagi, yang membuatnya tampak lebih rumit. Saat mengeksekusi fungsi, lebih nyaman untuk menggunakan tradisional jika ... lain. Dalam komentarnya, beberapa orang menyarankan agar membuat kode sisi klien lebih sederhana dan lebih pendek lebih efektif daripada meningkatkan efisiensi berjalan yang tidak mencolok, yang juga benar dalam beberapa program. Oleh karena itu, mungkin lebih penting untuk memilih bentuk yang lebih ringkas untuk memproses pernyataan bersyarat dari perspektif formal daripada efisiensi operasi dari pernyataan ini sendiri, belum lagi bahwa efisiensi operasi akan bervariasi dari UA ke UA.
Dalam penilaian bahwa hanya ada dua kondisi, menggunakan jika ... lain atau ?: keduanya cukup mudah, sedangkan metode operasi && dan || sedikit rumit. Namun pada kenyataannya, selama Anda memahami dua prinsip dasar berikut, semua masalah akan diselesaikan:
Pertama, saat menggunakan logika dan && dan logis atau || Operator, arahnya dari kiri ke kanan. The && berhenti ketika nilai pertama salah (atau nilai yang dapat dikonversi menjadi false, seperti null/tidak terdefinisi/0/""/nan, dll.), Dan berhenti ketika nilai pertama benar (atau nilai yang dapat dikonversi menjadi benar); Nilai yang dikembalikan oleh seluruh kondisi adalah nilai dari kondisi terdeteksi terakhir, tidak harus hanya benar/salah.
Kedua, logika memiliki prioritas lebih tinggi daripada operator && daripada logis atau operator.
Menurut prinsip pertama, r == 0 dan "kecil" dihitung secara berurutan dari kiri ke kanan. Jika r == 0 benar, "kecil" akan terdeteksi. "Kecil" adalah tali yang tidak kosong, jadi C akan dianggap sebagai "kecil"; Jika r == 0 salah, kondisi kedua "besar" deteksi logika atau || langsung dimulai. Dengan cara yang sama, C harus dianggap sebagai "besar". Menurut prinsip kedua, tidak perlu menambahkan tanda kurung selama pengoperasian variabel C dalam kode di atas.
Sejak menggunakan ?: dan &&, || Operator dapat memainkan peran dalam menyederhanakan kode dalam program tertentu, sangat penting dalam kode sumber perpustakaan seperti jQuery. Singkatnya, jenis operator ini memiliki dua aplikasi utama: satu adalah untuk menetapkan atau mengembalikan nilai, dan yang lainnya adalah menjalankan kode (untuk saat ini, mengklasifikasikannya).
Penggunaan untuk penugasan ada di mana -mana di jQuery atau perpustakaan lainnya. Aplikasi klasik adalah untuk mengimplementasikan fungsi nilai default untuk antarmuka. Kami dapat dengan mudah menulis kode seperti itu, seperti:
var myobj = fungsi (opsi) {var color = options.color || this.defaults.defaults; var backgroundColor = options.BackgroundColor || this.defaults.backgroundColor;}; myobj.prototype.defaults = {color: "#393939", BackgroundColor: "#222"} var myins = myobj baru ({color: "#80ff80"}); console.log ("color:" color.Apakah itu berhasil?: Atau && dan ||, karena mereka tidak memiliki fungsi blok kode bawaan jika ... lain (dibungkus dengan nomor {}), mereka hanya dapat menjalankan kode baris tunggal, seperti:
(xmlHttpRequest.readyState == 4 && xmlhttpRequest.status == 200)? peringatan ("Sukses!"): Peringatan ("Kegagalan!");Jadi jika ada beberapa kode yang perlu dieksekusi, fungsi anonim harus digunakan. menyukai:
(xmlHttpRequest.readyState == 4 && xmlhttpRequest.status == 200)? function () {alert ("Success!"); var a = 100; peringatan (a);}: peringatan ("Kegagalan!");Ada terlalu banyak singkatan dalam JQuery 1.7.1 kode sumber, seperti baris 2643:
// kait untuk atribut booleanboolhook = {get: function (elem, name) {// align atribut boolean dengan properti yang sesuai // jatuh kembali ke keberadaan atribut di mana beberapa boolean tidak didukung var attrnode, properti = jquery.prop (elem, name); mengembalikan properti === true || typeOf properti! == "boolean" && (attrnode = elem.getattributeNode (name)) && attrnode.nodevalue! == false? name.tolowercase (): tidak terdefinisi; }, set: function () {...}}Tampaknya kita harus terus belajar dan meringkas.
Kalimat bersyarat singkatan JavaScript di atas (disarankan) adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.