JS条件文最適化

2189 ワード

JS条件語句最適化の妙技
JavaScript条件語句は私達の普段の開発には避けられないものですが、多くの場合、コードの書き方がよくないので、最適化できるところを見てみます.
含めるかどうか
私達はよくある変数がある値に等しいと判断して、このようなコードを書きます.
function sayHi(name){
    if(name=='tom'||name=='hxh'||name=='lmly'){
        return 'hello'
    }
}
これ以上値を加えると、どんどん太って見えますが、その変数がある値の範囲にあるかどうかを判断します.
function sayHi(name){
    let names=['tom','hxh','lmly'];
    if(names.indexOf(name)>-1){
        return 'hello'
    }
}
合理的に見えますか?私たちは共通の論理を提示しました.これからはnamesという配列だけを維持すればいいです.もちろんincludes()も使えます.
if(names.includes(name)){
   return 'hello'
}
早めに帰る
コードを先に見ます
function sayHi(name){
    if(name){
        if(name=='hxh'){
            return 'hello';
        }
    }else{
        return 'no';
    }
}
ここで私達は先にnameが存在するかどうかを判断しました.そこで入れ子ifが発生しました.しかしもし私達が最初からnameが存在しないなら、直接に戻ってきます.
function sayHi(name){
    if(!name){
        return 'no';
    }
    if(name=='hxh'){
        return 'hello';
    }
}
コードがネスト層レベルより少なくなり、可読性が向上したことを発見します.
キーオブジェクト
switch…caseはみなさんもよく使うフレーズです.
function sayHi(name){
    let str="";
    switch(name){
        case 'tom':{ str='hello1'; } break;
        case 'hxh':{ str='hello2'; } break;
        case 'lucy':{ str='hello3'; } break;
        default :{str='no'; }
    }
    return str;
}
ちょっと詳しく見ると、相手のキーとよく似ていますので、次のようにします.
function sayHi(name){
    return {
        'tom':'hello1',
        'hxh':'hello2',
        'lucy':'hello3',
    }[name]
}
コードは簡潔が多いですか?
パラメータのデフォルト値
方法のパラメーターは空です.私たちはよく処理しなければなりません.多くの場合は標準値をあげます.
function sayHi(name){
    if(!name){
        name='tom'
    }
}
この時はコードを簡略化するために、124124を使うことができます.
function sayHi(name){
    name=name||'tom';
}
あなたのコードが環境サポートES 6を実行すると、パラメータのデフォルト文法がそのまま使用できます.
function sayHi(name='tom'){
    return name;
}