javascript - JS数组的不同声明方式有什么区别?应用在哪些场合?
迷茫
迷茫 2017-04-10 17:22:14
[JavaScript讨论组]

新新新手,我在慕课网学到数组这里,之前在W3SCHOOL也看过两种声明方式,发现其他声明方式,想请教一下都有什么区别和不同的应用场合。

<script type="text/javascript">
 /*第一种声明方式
 var myarr=new Array();
 myarr[0]=80; 
 myarr[1]=60;
 myarr[2]=99;
 */
 var myarr=new Array(80,60,99);  //第二种声明方式,这种声明方式是第一种的简写?
 //var myarr=[80,60,99];         //第三种声明方式
 //var myarr=([80,60,99]);       //第四种声明方式,多了个小括号,不解
 document.write("第一个人的成绩是:"+myarr[0]);
 document.write("第二个人的成绩是:"+myarr[1]);
 document.write("第三个人的成绩是:"+myarr[2]); 
</script>

第四种声明方式,多了个小括号,是什么情况呢?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(7)
PHP中文网

并没有四种,只有两种:
使用构造函数:var arr = new Array();
使用字面量形式:var arr = [1,2,3];
其他形式只是对这两种形式的不同用法;
建议买本高程的书看吧,里面介绍的既详细又系统。
+++++++++++++++++
补充:
其实还有一种方式: var arr = Array();也是构造函数声明方式的简写
这三种声明方式实际上并没有什么区别,可以根据不同需求来.
比如:
声明一个长度200的数组,元素不确定, 使用构造函数比较好. var arr = Array(200);
声明一个有五个元素的数组,但第四个元素不确定,可以用字面量. var arr = ["apple","bannar","pear",,"orange"];
当然最常用的就是字面量形式了.详细Array object

翻书不方便,平时可以多查查MDN,类似于文档,但比W3SCHOOL靠谱详细的多.
但对于对象来说,两种声明方式是有点不太一样的,具体的你可以去MDN上查找相关资料.

PHPz

我看过的的确有四种,你的问题的后面两种不是宣告(聲明)数组,只是宣告(聲明)时带赋值而已。

下面最后两种很少见,也不要用,书上都没教,纯粹这样也是宣告(聲明)数组的合法语句而已:

var a = [];
var b = new Array();
var c = Array();
var d = Object.create(Array.prototype);

a.push(1);
b.push(2);
c.push(3);
d.push(4);

console.log(a);
console.log(b);
console.log(c);
console.log(d);

要用var a = []而不要用var a = new Array()这种,是因为第二种比较慢,而且它如果只传一个参数时,与传两个参数的行为不同,容易在使用上造成错误。

有些人从其他语言(例如Java)学过来学或教JS的人会认为像var a = new Array(10)可以预先分配好空间,之后作处理方便。但JS是脚本语言,数组的宣告(聲明)与执行方式是不同的。

黄舟

其实就两种,讲那么多没用还浪费脑细胞,慕课网的课程就是这样,太过于学术,真正实用的课程还是看传智播客的吧,分享给你一些干货:

http://pan.baidu.com/s/1jIyiGdw;

阿神

js课程讲的最好的就是妙味课堂跟智能社了

阿神

参数个数的不同,会导致Array()的行为有差异。

Array() // []
Array(3) // [, , ,]
Array(3, 11, 8) // [3, 11, 8]

上面代码中,Array方法没有参数、一个参数、三个参数时,返回结果都不一样。只有当参数个数不少于2个时,Array()才会返回由参数组成的新数组。

怪我咯

使用new的时候会调用Array的构造函数。而直接用[]来创建数组的时候,不调用构造函数,只是声明了一个数组型(严格说js并没有数组类型)对象,效率上比new快。可以看看其他语言有关类的介绍。

迷茫

字面量声明数组不会调用数组的构造函数。

//改变Array的构造函数
Array=function(){alert('new array')}
var array_one=[1,2,3];
//[1,2,3]
var array_two=new Array(1,2,3);
//alert('new array')

改变构造函数后字面量仍然可以声明数组。

js学习强烈推荐《javascript高级程序设计》,目测没有比这本书讲的好的。

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

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