obj.a和obj[a]和obj[‘a’]的区别
我们先来看下面的代码
var a =100;
var obj = {
a:1,
b:55
}
console.log(obj['a']);
console.log(obj.a);
console.log(obj[a]);
运行结果依次为1 1 undefined
第三行的输出如果全局变量没有定义的话,那么就是报错的
我们可以得出结论。obj.a相当于obj.[‘a’] 后者必须要加引号
第三行可能有人会问,为什么var a =100 它为撒不等于100呢,因为两个开辟的空间都不是同一个空间只是引用的是同一个栈内存里面的a。
简单的说就是第三行输出a的时候会先在obj的作用域里面去寻找a,但是这里没有定义的a,所以会到外面去找a,此时有一个定义的a,但是开的内存不一样所以为undefined