前端性能優(yōu)化:js中優(yōu)化條件判斷語句

在開發(fā)過程中,由于追求開發(fā)速度,我們往往很多時候都沒有注意代碼的可讀性與性能,這里介紹幾個技巧,讓你寫出可讀性強(qiáng)、簡潔的js代碼

1、多個條件滿足之一時,推薦使用Array.includes

// 優(yōu)化前
function test(val) {
    if (val === 'js' || val === 'java' || val === 'python') {
        console.log('編程語言')
    }
}

// 優(yōu)化后
function test(val) {
    cosnt arr = ['js', 'java', 'python']
    if (arr.includes(val)) {
        console.log('編程語言')
    }
}

2、減少嵌套,盡早返回

// 優(yōu)化前
function test(val) {
    if (val) {
        if (val === 'js') {
            console.log(val)
        } else {
            console.log('其他')
        }
    } else {
        return
    }
}

// 優(yōu)化后
function test(val) {
    if (!val) return
    val === 'js' ? console.log(val) : console.log('其他')
}

3、使用函數(shù)的默認(rèn)參數(shù)與解構(gòu)

// 優(yōu)化前
function test(val, num) {
    const item = num || 1
    console.log(`this is ${item}${val}`)
}
test('js', 4)

// 優(yōu)化后
function test(val, num = 1) {
    console.log(`this is ${num}${val}`)
}
test('java', 4)

如果默認(rèn)參數(shù)是對象呢?我們就可以使用解構(gòu)了

// 優(yōu)化前
function test(val) {
    if (val && val.name) {
        console.log(val.name)
    } else {
        console.log('null')
    }
}
test({name: 'js', num: 1})

// 優(yōu)化后
function test({name} = {}) {
    console.log(name)
}
test({name: 'js', num: 1})

4、使用map或者對象字面量替代switch語句

// 優(yōu)化前
function test(num) {
    switch(num) {
        case 1:
            return ['js', 'java']
        case 2:
            return ['python', 'ruby']
        case 3:
            return ['php', 'c#']
        default
    }
    conosle.log(num)
}
test(1)

// 優(yōu)化后,對象字面量方式
function test(num) {
    const arr = {
        1: ['js', 'java'],
        2: ['python', 'ruby'],
        3: ['php', 'c#'],
    }
    console.log(arr[num])
}
test(1)

// map方式
function test(num) {
    const arr = new Map()
        .set(1, ['js', 'java'])
        .set(2, ['python', 'ruby'])
        .set(3, ['php', 'c#'])
    console.log(arr.get(num))
}
test(1)

5、使用Array.every()或者Array.some()

// 優(yōu)化前
const item = [
    {name: 'js', num: 2},
    {name: 'java', num: 4},
    {name: 'pyton', num: 2},
    {name: 'php', num: 1},
]
function test() {
    let isNumTwo = true
    for (let val of item) {
        if (!isNumTwo) break
        isNumTwo = (val.num === 2)
    }
    console.log(isNumTwo)  // false
}
test()

// 優(yōu)化后
const item = [
    {name: 'js', num: 2},
    {name: 'java', num: 4},
    {name: 'pyton', num: 2},
    {name: 'php', num: 1},
]
function test() {
    const isNumTwo = item.some(val => val.num === 2)
    console.log(isNumTwo)  // true
}
test()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容