switch ステートメントから戻ることは break を使用するよりも良い方法だと考えられますか? [closed] 質問する

switch ステートメントから戻ることは break を使用するよりも良い方法だと考えられますか? [closed] 質問する

オプション 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 から戻るだけでも問題ありません。

おすすめ記事