Opsi 1 - beralih menggunakan kembali:
function myFunction(opt)
{
switch (opt)
{
case 1: return "One";
case 2: return "Two";
case 3: return "Three";
default: return "";
}
}
Opsi 2 - beralih menggunakan istirahat:
function myFunction(opt)
{
var retVal = "";
switch (opt)
{
case 1:
retVal = "One";
break;
case 2:
retVal = "Two";
break;
case 3:
retVal = "Three";
break;
}
return retVal;
}
Saya tahu bahwa keduanya berfungsi, tetapi apakah satu lagi merupakan praktik terbaik? Saya cenderung menyukai Opsi 1 - beralih menggunakan return terbaik, karena lebih bersih dan sederhana.
var SFAIC = {};
SFAIC.common =
{
masterPages:
{
cs: "CS_",
cp: "CP_"
},
contentPages:
{
cs: "CSContent_",
cp: "CPContent_"
}
};
function getElementPrefix(page)
{
return (page in SFAIC.common.masterPages)
? SFAIC.common.masterPages[page]
: (page in SFAIC.common.contentPages)
? SFAIC.common.contentPages[page]
: undefined;
}
Untuk memanggil fungsi, saya akan melakukannya dengan cara berikut:
getElementPrefix(SFAIC.common.masterPages.cs);
getElementPrefix(SFAIC.common.masterPages.cp);
getElementPrefix(SFAIC.common.contentPages.cs);
getElementPrefix(SFAIC.common.contentPages.cp);
Masalahnya di sini adalah bahwa ia selalu mengembalikan tidak terdefinisi. Saya menduga bahwa itu karena nilai aktual objek lewat dan bukan properti. Apa yang akan saya lakukan untuk memperbaikinya dengan menggunakan teknik yang dijelaskan dalam komentar @ ic3b3rg ?
javascript
return
switch-statement
break
Code Maverick
sumber
sumber
Jawaban:
Istirahat akan memungkinkan Anda melanjutkan pemrosesan dalam fungsi. Baru saja kembali dari saklar baik-baik saja jika itu semua yang ingin Anda lakukan dalam fungsi.
sumber
return {1:"One",2:"Two,3:"Three"}[opt];
. Jika Anda memerlukan default maka itu akan menjadivar o={1:"One",2:"Two,3:"Three"}; return opt in o?o[opt]:"";
return (opt in o) ? o[opt] : "";
, tetapi selalu mengembalikan default dalam kasus khusus saya."
in"Two"
) tetapi berfungsi untuk saya ... inilah tes sederhana:var o={1:"One",2:"Two",3:"Three"},opt=2; alert(opt in o?o[opt]:"");
Itu tergantung, jika fungsi Anda hanya terdiri dari pernyataan switch, maka saya pikir itu baik-baik saja. Namun, jika Anda ingin melakukan operasi lain dalam fungsi itu, itu mungkin bukan ide bagus. Anda juga mungkin harus mempertimbangkan kebutuhan Anda sekarang dibandingkan di masa depan. Jika Anda ingin mengubah fungsi Anda dari opsi satu ke opsi dua, diperlukan lebih banyak refactoring.
Namun, mengingat bahwa dalam pernyataan if / else itu adalah praktik terbaik untuk melakukan hal berikut:
Berdasarkan ini, argumen dapat dibuat bahwa opsi satu adalah praktik yang lebih baik.
Singkatnya, tidak ada jawaban yang jelas, sehingga selama kode Anda mematuhi standar yang konsisten, dapat dibaca, dan dapat dipertahankan - artinya jangan mencampur dan mencocokkan opsi satu dan dua di seluruh aplikasi Anda, itu adalah praktik terbaik yang harus Anda lakukan. berikut.
sumber
return foo == "bar";
return foo == "bar" ? 0 : 100;
atau bahkanreturn [100,0][foo == "bar"];
.return [100,0][+(foo == "bar")];
?return [100,0][foo == "bar" & 1];