为什么obj[name]不会报错而obj[sex]报错,不都是错误的使用方式吗?
name表示属性名,这个是内置的
你在前面某个地方定义了var name = xxx了吧,不带引号会当初一个变量来使用,如果没有定义该变量就会报错
在我们使用变量的时候,如果是js的全局变量,那么变量存储的位置就是 window,例如 var a = 1,则 window['a'],window.a 都是指向这个变量 a
那么问题来了, window 具有一个默认值 name,即窗口名,这个是用来区分 window.open 给定的名称,target、iframe、frameset 等也会有给定的名称,那么 window['name'] 、 window.name ,和变量name就重合了,而 window.name 默认已经声明,值为空字符串
而你使用的其他变量并未进行声明,所以会报错,而name不会