オプション 1 -switch
使用return
:
function myFunction(opt) {
switch (opt) {
case 1: return "One";
case 2: return "Two";
case 3: return "Three";
default: return "";
}
}
オプション2 -switch
使用break
:
function myFunction(opt) {
let retVal = "";
switch (opt) {
case 1:
retVal = "One";
break;
case 2:
retVal = "Two";
break;
case 3:
retVal = "Three";
break;
}
return retVal;
}
switch
どちらも機能することはわかっていますが、どちらかがベスト プラクティスでしょうか? 私はオプション 1 (bestを使用するreturn
) の方がクリーンでシンプルなので、こちらを好みます。
@ic3b3rgのコメントで言及されているテクニックを使用した私の具体的な例のjsFiddleがこれです。:
let 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;
}
関数を呼び出すには、次の方法を実行します。
getElementPrefix(SFAIC.common.masterPages.cs);
getElementPrefix(SFAIC.common.masterPages.cp);
getElementPrefix(SFAIC.common.contentPages.cs);
getElementPrefix(SFAIC.common.contentPages.cp);
ここでの問題は、常に undefined が返されることです。プロパティではなく、オブジェクト リテラルの実際の値が渡されるためだと思います。@ic3b3rg のコメントで説明されている手法を使用してこれを修正するにはどうすればよいでしょうか?
ベストアンサー1
break を使用すると、関数内で処理を続行できます。関数内で実行したいことがそれだけであれば、switch から戻るだけでも問題ありません。