在JavaScript中声明数组时应遵循的最佳实践是什么?

2020/10/22 10:23 · javascript ·  · 0评论

当我需要声明一个新数组时,我使用这种表示法

var arr = new Array();

但是在进行在线测试时(例如在jsbin上),警告提示我“使用数组文字符号[]”。

我没有找到避免使用构造函数的理由。在某种程度上是否比使用效率低[]还是不好的做法?

是否有充分的理由var arr = [];代替使用var arr = new Array();

,人们使用var a = [],因为道格拉斯·克罗克福德是这么说的

他的原因包括以下行为的非直觉和不一致的行为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()创建仅包含一个预先指定的number元素的数组

使用[]实际上更有效,也更安全可以覆盖Array构造函数并使它做一些奇怪的事情,但是您不能覆盖的行为[]

就个人而言,我总是使用[]语法,并且类似地,总是使用{}语法代替new Object()

一个重要的区别是[]它将始终实例化一个新的Array,而new Array可能被劫持以创建一个不同的object

(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' ];

如所示在这里,使用空的字面和几个已知元素的是fatster比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;
}

这也适用于非常小的阵列

不,对于空数组,实际上没有理由使用另一种表示法。

但是,大多数浏览器使用的性能x = [];都比调用Constructor好

如果需要创建具有特定大小的数组,则需要使用x = new Array(10);例如创建具有10undefined个插槽的数组

  • var arr = []使用数组/对象文字
  • var arr = new Array()使用数组/对象构造函数

定义数组或对象的最快方法是文字方法,因为您无需调用构造函数

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 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("-");

构造函数可以作为参数有一个限制。

在大多数系统上,我限制为2 ^ 16(2个字节):

var myFreshArr = new Array(0,1,2,3 ..... 65536);

这将导致错误(参数过多...。)

使用文字[]时,您不会遇到此类问题。

如果您不关心这么大的数组,我想您可以使用任何喜欢的方法。

var array = [ 1, 2, 3, 4];

是糖

var array = new Array(1, 2, 3, 4);

是盐

这是因为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)
本文地址:http://javascript.askforanswer.com/zaijavascriptzhongshengmingshuzushiyingzunxundezuijiashijianshishenme.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!