解析Javascript中中括号“[]”的多义性

  Javascript中括号有四种语义

  语义1,声明数组

  

复制代码 代码如下:

  var ary = []; // 声明一个空数组

  var ary = [1,3]; // 声明一个数组,同时赋初值

  语义2,取数组成员

  

复制代码 代码如下:

  var ary = [1,2,3];

  var item = ary[0];

  语义3,定义对象成员 (可以不遵循标识符规则 )

  

复制代码 代码如下:

  var obj = {};

  // 为obj添加一个属性name,name是合法的标识符,即也可以通过obj.name方式来定义

  obj['name'] = 'jack';

  // 为obj添加一个属性2a,2a不是合法的标识符(不能以数字开头),不能通过obj.2a来定义

  obj['2a'] = 'test';

  语义4,取对象成员

  

复制代码 代码如下:

  var obj = {name:'jack'};

  obj['2a'] = 'test';

  obj['name']; // --> jack

  obj['2a']; // --> test (不能通过obj.2a获取)