##Array 构造函数

由于 Array 的构造函数在如何处理参数时有点模棱两可,因此总是推荐使用数组的字面语法 - [] - 来创建数组。

    [1, 2, 3]; // 结果: [1, 2, 3]
    new Array(1, 2, 3); // 结果: [1, 2, 3]

    [3]; // 结果: [3]
    new Array(3); // 结果: []
    new Array('3') // 结果: ['3']

    // 译者注:因此下面的代码将会使人很迷惑
    new Array(3, 4, 5); // 结果: [3, 4, 5]
    new Array(3) // 结果: [],此数组长度为 3

译者注:这里的模棱两可指的是数组的两种构造函数语法 聚合一些更有价值的编程书籍/教程/文档 2020回归技术纯粹,相信时间的力量,做时间的朋友 -- 前端进阶资源教程@Js中文网

由于只有一个参数传递到构造函数中(译者注:指的是 new Array(3); 这种调用方式),并且这个参数是数字,构造函数会返回一个 length 属性被设置为此参数的空数组。 需要特别注意的是,此时只有 length 属性被设置,真正的数组并没有生成。

译者注:在 Firebug 中,你会看到 [undefined, undefined, undefined],这其实是不对的。在上一节有详细的分析。

    var arr = new Array(3);
    arr[1]; // undefined
    1 in arr; // false, 数组还没有生成

这种优先于设置数组长度属性的做法只在少数几种情况下有用,比如需要循环字符串,可以避免 for 循环的麻烦。

    new Array(count + 1).join(stringToRepeat);

译者注: new Array(3).join('#') 将会返回 ##

结论

应该尽量避免使用数组构造函数创建新数组。推荐使用数组的字面语法。它们更加短小和简洁,因此增加了代码的可读性。

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「IT平头哥联盟」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

results matching ""

    No results matching ""