在js中用中括号访问对象的时候属性为什么要加上双引号?

首先声明一个对象 属性名加不加双引号都是可以的。
但是为什么用中括号访问对象属性的时候,为什么要加上双引号?
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
而用点语法的话属性名是不能用变量的!追问

谢谢前辈,你讲的很明白!

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网