84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
或许在大神眼里挺简单的一个问题。但是我不太明白为什么。
我变量a是在console后面添加内容,为什么在前面的输出中会输出完整的数组。不应该输出undefined吗?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
首先,在JS中,数组和对象都是引用类型,引用是在操作堆内存,他们指向的是内存里同一个数据,当b.push(a)的时候,实际上b内的元素a数组和a指向的是同一个地址,所以操作a的时候,b内的元素a数组也在改变。
另外浏览器的控制台是延迟加载(lazy loading),是在你展开那个 Object 的时候,才会去枚举该对象中的每一个属性,并把它显示出来的。
不信你可以把你的console.log(b)改为console.log(JSON.stringify(b))结果是[]。
首先,在JS中,数组和对象都是引用类型,引用是在操作堆内存,他们指向的是内存里同一个数据,当b.push(a)的时候,实际上b内的元素a数组和a指向的是同一个地址,所以操作a的时候,b内的元素a数组也在改变。
另外浏览器的控制台是延迟加载(lazy loading),是在你展开那个 Object 的时候,才会去枚举该对象中的每一个属性,并把它显示出来的。
不信你可以把你的console.log(b)改为console.log(JSON.stringify(b))结果是[]。