正如标题所说:压缩数组和文字数组有什么区别?
new Array("John", "Bob", "Sue"); // condensed array
["John", "Bob", "Sue"]; // literal array
我能用另一个我无法做的事吗?或者它是保存在记忆中的方式?
答案 0 :(得分:28)
否,生成的对象没有区别,它们是相同的。
首先是尝试满足用于“经典”环境的程序员,你必须实例化一个“新”数组对象。
应该注意的是,javascript中的数组不是内存的顺序分配,而是具有可枚举属性名称和一些额外(有用)方法的对象。
由于这种情况,创建一个设定长度的数组在大多数(如果不是全部)情况下是相当无用的。
var array = new Array(10);
在功能上与手动设置数组的长度相同
var array = [];
array.length = 10;
答案 1 :(得分:3)
至少有一个众所周知的使用Array()构造函数:
String.prototype.repeat= function(n){
n= n || 1;
return Array(n+1).join(this);
}
document.writeln('/'.repeat(80))
答案 2 :(得分:2)
阵列初始化器的语义在ECMA 262第5版规范的第11.1.4节中。你可以在那里阅读。它表示初始化器的含义与调用new Array
时的含义相同。但是你可以用初始化器做一件事,你不能使用构造函数。看看这个:
> a = [3,,,,5,2,3]
3,,,,5,2,3
> a = new Array(3,,,,5,2,3)
SyntaxError: Unexpected token ,
我在初始化器中使用了所谓的“省略”。
数组构造函数具有自己的
的一点灵活性a = new Array(10)
,,,,,,,,,
a = new Array(1,2,30)
1,2,30
因此构造函数的单个参数会生成一个包含许多未定义的数组。