我在很多教程看,目前的最佳实践,以创建一个新的JavaScript数组是使用JavaScript数组最佳实践使用[]而不是新阵列?
var arr = []
代替
var arr = new Array()
有什么背后的原因何在呢?
我在很多教程看,目前的最佳实践,以创建一个新的JavaScript数组是使用JavaScript数组最佳实践使用[]而不是新阵列?
var arr = []
代替
var arr = new Array()
有什么背后的原因何在呢?
这可能是因为Array对象可以在JavaScript中被覆盖,但是数组文字符号不能。见this answer为例
还要注意的是这样做的:
var x = [5];
比做不同:
var x = new Array(5);
前者创建与5的值一个元素之后的初始化数组用5个未定义元素创建一个数组。
而且,为了使它更有趣,'new Array(1,2)'等于'[1,2]'。 – 2010-05-31 15:23:14
这是打字少,这在我的书总是赢:-)
一旦我固定在我们的页面中的一个奇怪的错误。该页面希望创建一个数字数据库键列表作为一个Javascript数组。键总是大整数(高位始终设置为指示符)。原代码看起来像:
var ids = new Array(${the.list});
那么,猜猜当列表中只有一个值时发生了什么?
var ids = new Array(200010123);
这意味着,“创建一个数组并初始化它,以便有2亿空条目”。
通常,数组文字(var a = [1,2,3]或a = [])是要走的路。
但是偶尔需要一个数组,其长度本身就是数组的定义特征。
变种A =阵列(N)将(使用文字)需要两个以下词组
变种A = [];则为a.length = N;
在任何情况下,您都不需要使用Array构造函数的'new'运算符, 并不像您需要使用新的Date对象的'new'那样。
要在不长
var arr = [];
创建阵列要与长度更动态
var arr;
(arr = []).length = 10; // 10 is array length
要创建具有长数组动力较小
var arr = [];
arr.length = 10;
这取决于每个实施虽然创建阵列。至少在过去[]中,在一些JS引擎中使用了Array构造函数(iirc通过覆盖数组构造函数,对于能够为JSONP请求捕获数组创建的脚本模糊不清)。 – 2010-05-31 15:18:33
@reko_t - 这是非常真实的。我知道在Firefox的数组文字不使用数组构造函数,不知道其他人(目前没有办法检查,有人可以确认吗?) – 2010-05-31 15:22:33
有人能够修复链接吗? iPhone编辑比较棘手:) – 2010-05-31 15:23:27