首先声明一个对象 属性名加不加双引号都是可以的。
但是为什么用中括号访问对象属性的时候,为什么要加上双引号?
var obj = {
name1: "张三"
}
console.log(obj.name) // 张三 用点语法 访问 没问题
console.log(obj[name1]) // 直接报 ReferenceError: name1 is not defined
想请问一下各路高手,这是为什么呢?
不加双引号的话,js会认为这是变量名,而这个变量是不存在的,所以报“not defined”(未定义)的错误。
而这其实就是用中括号来访问对象属性的意义所在:可以用变量来代替属性名,比如:
var n = "name1";
console.log(obj[n]); //obj[n]就相当于obj["name1"]或obj.name1
而用点语法的话属性名是不能用变量的!追问
而这其实就是用中括号来访问对象属性的意义所在:可以用变量来代替属性名,比如:
var n = "name1";
console.log(obj[n]); //obj[n]就相当于obj["name1"]或obj.name1
而用点语法的话属性名是不能用变量的!追问
谢谢前辈,你讲的很明白!
温馨提示:答案为网友推荐,仅供参考