必看的JS條件語句優化妙招

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’

    }

}

這個時候我們可以使用||來簡化代碼

function sayHi(name){

    name=name||’tom’;

}

如果你的代碼運行環境支持ES6,那就可以直接使用參數默認值語法

function sayHi(name=’tom’){

    return name;

}