Q:以下代码输出结果是什么?

  1. var arr = []
  2. arr[0] = 1
  3. arr['0'] = 2
  4. console.log(arr[0] + arr['0'])

A:答案

正确答案:4

讲解

首先我们得先知道arr[0]arr['0'] 是同一个东西,因为在js中,数组的本质就是对象,即使你不加字符串包裹,js在执行的时候也会自动的给它加上。arr[0]就等同于下面的写法

  1. {
  2. 0:1
  3. }

arr['0']就等同于下面的写法

  1. {
  2. '0':2
  3. }

其次就会涉及到js浅拷贝的问题,本题由于是操作的同一个内存地址,所以后面的会覆盖掉前面的,那么最终的答案就是4