Seseorang pernah mengatakan bahwa program yang benar -benar bagus tidak memiliki jika..else, tentu saja beralih tidak sebagus jika..else. Penggunaan sakelar dilarang dalam spesifikasi JS.
Objek perintah dengan sempurna memecahkan masalah ini.
Mengutip blog asing:
JavaScript memiliki pernyataan aliran kontrol yang baik, yang sering dibungkus dengan kawat gigi keriting. Tapi ada pengecualian: sakelar ... pernyataan kasus. Hal aneh tentang switch ... kasing adalah Anda harus menambahkan istirahat kata kunci di akhir setiap kasus untuk mencegah kontrol proses dari bepergian ke pernyataan kasus berikutnya. Perjalanan waktu mengacu pada metode memungkinkan beberapa kasus dieksekusi. Ketika istirahat yang diharapkan tidak ditemui, kontrol akan secara otomatis diserahkan ke kasus berikutnya. Namun, seperti halnya titik koma dan kawat gigi keriting, Anda mungkin secara tidak sengaja lupa untuk menulis istirahat. Ketika ini terjadi, pemeriksaan kesalahan kemudian lebih menyakitkan karena pernyataan itu sendiri benar. Oleh karena itu, adalah kebiasaan yang baik untuk menulis kasing ... istirahat berpasangan.
Kami biasanya mengatakan bahwa JavaScript memiliki literal objek yang elegan dan fungsi tingkat atas, yang membuat metode spesifik menjadi sangat sederhana. Objek yang dibuat untuk kueri metode, kami menyebutnya objek aktif atau objek perintah, yang digunakan dalam banyak pola desain perangkat lunak, termasuk pola perintah yang kuat dan berguna.
Contoh:
Salinan kode adalah sebagai berikut:
// Metode Switch
function testswitch (name) {
switch (name) {
kasus '1':
mengembalikan 'hack';
merusak;
kasus '2':
mengembalikan 'slash';
merusak;
kasus '3':
return 'run';
merusak;
bawaan:
mengembalikan false;
merusak;
}
}
// Gunakan objek perintah
fungsi testfn (name) {
var name = {
'1': function () {
mengembalikan 'hack';
},
'2': function () {
mengembalikan 'slash';
},
'3': function () {
return 'run';
}
};
if (typeof name [name]! == 'function') {
mengembalikan false;
}
return names [name] ();
}
// Hasil tes
var result1 = testswitch ('1');
var result2 = testfn ('2');
console.info (result1, result2);