javascript - JS Array(3) 不等价于 [undefined, undefined, undefined]?
PHP中文网
PHP中文网 2017-04-10 16:15:57
[JavaScript讨论组]
var array = new Array(3);
var array1 = [undefined, undefined, undefined];

console.log(array);  //[]
console.log(array1); //[undefined, undefined, undefined]

console.log(array.toString()); //,,
console.log(array1.toString()); //,,

array.forEach(function(item){console.log(item)}); //nothing output
array1.forEach(function(item){console.log(item)}); //undefined 3 times

for (i=0;i<array.length;i++){console.log(array[i])} //undefined 3 times
for (i=0;i<array1.length;i++){console.log(array1[i])} //undefined 3 times

for (i in array){console.log(array[i])}  //onthing output
for (i in array1){console.log(array1[i])} //undefined 3 times

多谢解答
new Array(3) 等价于下面的定义

var array2 = [];
array2.length = 3;
PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
ringa_lee

菜鸟也来答一答

1,首先undefined是javascript中得一种类型.

var array1=[undefined, undefined, undefined];

var array1=[1, 1, 1];
是一样的表示array1中都有3个元素。

而var array=new Array(3);只是创建了一个length为3的数组但是里面为空。

2,来看forEach方法

  forEach方法:接受一个回调函数作为唯一的参数,然后将对象中的每一个元素(按照文档中的顺序)调用回调函数。
  结合1点的内容测试一段代码
  var testAr=[1,2,3];//创建一个数组
  testAr.length=5;//将数组大小变为 5,但是4,5的位置并没有元素而是一段空
  testAr[4]=undefined;
  testAr.forEach(function(item){console.log(item)})//1,2,3,undefined

3,再来看看for in方法
//先吃饭

迷茫

new Array(3),只是创建了一个长度为3的数组,没有任何值。
而你上面的Array1,每个位置都是有值的,是undefined。

天蓬老师

关键在于这是数组,就算你会数组的每一个位置相等,但是它的引用不同就是不同的对象就会不相等。就像:

var a = [1, 2];
var b = [1, 2];
console.log(a == b); //输出false
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号