当我需要声明一个新数组时,我使用这个符号
var arr = new Array();
但是当在线测试时,例如在 Jsbin上,一个警告信号向我发出“使用数组文字符号[]”的信号
我没有找到避免使用构造函数的理由。在某些方面是否比使用 []效率低?还是说这是个坏习惯?
[]
是否有充分的理由使用 var arr = [];而不是 var arr = new Array();?
var arr = [];
构造函数可以接受一个限制作为参数。
在大多数系统中,我遇到的限制是2 ^ 16(2字节) :
var myFreshArr = new Array(0,1,2,3 ..... 65536);
这将导致错误(参数太多... ...)
当使用文字[]时,您不会遇到这样的问题。
如果您不关心这么大的数组,我想您可以使用您喜欢的任何数组。
大多数情况下,人们使用 var a = []是因为 道格拉斯·克罗克福特是这么说的。
var a = []
他的理由包括 new Array()的不直观和不一致的行为:
new Array()
var a = new Array(5); // an array pre-sized to 5 elements long var b = new Array(5, 10); // an array with two elements in it
注意,使用 new Array()无法创建只包含 一预先指定的数字元素的数组!
使用 []实际上更有效率,也更安全!可以覆盖 Array构造函数并让它做一些奇怪的事情,但是不能覆盖 []的行为。
Array
就个人而言,我总是使用 []语法,并且类似地总是使用 {}语法来代替 new Object()。
{}
new Object()
这是因为 new Array()是模糊的。这些是正确的构造函数:
// Using brackets [element0, element1, ..., elementN] // Using new AND a list of elements new Array(element0, element1, ..., elementN) // Using new AND an integer specifying the array length new Array(arrayLength)
不,对于空数组实际上没有理由使用一个符号而不使用另一个符号。
但是,大多数浏览器使用 x = [];显示的性能略好于调用 构造函数。
x = [];
如果您需要创建一个具有特定大小的 Array,那么您可以使用 x = new Array(10);来创建一个具有10个 undefined槽的 Array。
x = new Array(10);
undefined
两者都只是正确的。但是大多数人使用 var a = []
在 JavaScript 中声明数组的三种方法。
方法1 : 我们可以使用 JavaScript“ new”关键字显式声明一个数组,以在内存中实例化数组(即创建它,并使其可用)。
// Declare an array (using the array constructor) var arlene1 = new Array(); var arlene2 = new Array("First element", "Second", "Last");
方法2 : 我们使用一个替代方法来声明数组。
// Declare an array (using literal notation) var arlene1 = []; var arlene2 = ["First element", "Second", "Last"];
方法3 : JavaScript 还允许您通过调用特定的方法间接地创建数组。
// Create an array from a method's return value var carter = "I-learn-JavaScript"; var arlene3 = carter.split("-");
定义数组或对象的最快方法是文本方法,因为您不需要调用构造函数
var arr1 = new Array(1, 2, 3, 4); var arr2 = [1, 2, 3, 4]; alert(arr1[0]); // 1 alert(arr2[0]); // 1 var arr3 = new Array(200); var arr4 = [200]; alert(arr3[0]); // 'undefined' alert(arr4[0]); // 200
var array = [ 1, 2, 3, 4];
是糖
var array = new Array(1, 2, 3, 4);
是盐
一个重要的区别是,[]将 一直都是实例化一个新的 Array,而 new Array可以是 被劫持来创造一个不同的对象。
new Array
(function () { "use strict"; var foo, bar; //don't do this, it's a bad idea function Array() { alert('foo'); } foo = new Array(); bar = []; }());
在我的示例代码中,我将 Array函数隐藏在文档范围的其余部分之外,但是如果您遇到这种问题,那么代码很可能不会被放在一个漂亮的闭包中,并且很难定位。
免责声明 : 劫持 Array构造函数不是一个好主意。
正如大多数开发人员所使用的,数组字面值更容易预测。大多数数组的使用都是使用文本,让您的代码与其他开发人员使用的代码相匹配是有价值的。
var ns = []; var names = [ 'john', 'brian' ];
如 给你所示,对空元素和两个已知元素使用文本比 Array 构造函数更快。
new Array(size)
如果大小已知,那么使用 Array 构造函数可以显著提高性能。然而,这也意味着你必须处理一个数组,已经有“未定义”的填充 都是价值观。
如图所示 给你
// fill an array with 100 numbers var ns = new Array( 100 ); for ( var i = 0; i < 100; i++ ) { ns[i] = i; }
这也适用于 非常小的数组。