当我们想获取对象中的值时,通常可以使用点语法或者中括号语法实现。他们之间又有哪些区别呢?
1.当对象中的属性是基本的字符串类型时,点语法和中括号语法均可以使用。
let list = {a:123}
list.a //123
list["a"] //123
2.当对象中的属性是数字类型时,中括号语法可以使用,点语法报错。
let list = {1:123}
list.1 //Uncaught SyntaxError: Unexpected number
list[1] //123
3.当对象中的属性是可以转化为数字的字符串时,中括号语法可以使用,点语法报错。
list = {"1":123}
list."1" //Uncaught SyntaxError: Unexpected string
list["1"] //123
4.当对象中的属性包含有错误语法,例如空格,中括号语法可以使用,点语法报错。
let list = {"he llo":123}
list.he llo //Uncaught SyntaxError: Unexpected identifier 'llo'
list["he llo"] //123
5.当对象中的属性为变量时,中括号语法可以取值,点语法取不到值。
let list = {a:123}
let name = 'a'
list.name //undefined
list[name] //123
总结:
点语法:静态的,不接受变量,以及数字型的属性进行取值,有一定局限性。
中括号语法:动态的,可以接受变量、数字型等,且可以兼容错误语法等,范围更广。