a.b.c和a['b']['c']哪个性能更高

个人理解应该是 a.b.c 比 a['b']['c'] 性能高点,后者还要考虑 [ ] 中是变量的情况,

再者,从两种形式的结构来看,显然编译器解析前者要比后者容易些,自然也就快一点

构造深层数据结构测试一下

// 构造深层对象,{"key":{"key":{"key":{"key":{"key":{"key":{"key":"here"}}}}}}}
function compare(times) {
    let obj = {
        key: {}
    }
    let temp = obj
    for(let i=0;i<times;i++) {
        let t = temp['key']
        t['key'] = {}
        temp = t
    }
    temp['key']['key'] = 'here'
    // console.log(JSON.stringify(obj));

    // 访问obj.key.key...
    console.time('a.key')
    let o1 = obj
    while(o1) {
        if(o1 === 'here') {
            break
        }
        o1 = o1.key
    }
    console.timeEnd('a.key')

    // 访问obj['key']['key']
    console.time(`a['key']`)
    let o2 = obj
    while(o2) {
        if(o2 === 'here') {
            break
        }
        o2 = o2['key']
    }
    console.timeEnd(`a['key']`)
}

compare(5000000)
// a.key: 81.062ms
// a['key']: 93.266ms