gpt4 book ai didi

Javascript : Array anti-pattern

转载 作者:行者123 更新时间:2023-11-30 07:09:06 24 4
gpt4 key购买 nike

我正在努力让自己深入了解 JavaScript,目前正在学习它。

在数组中,我一直在读到下面是一个反模式:

var a = new Array("a", "b", "c");

下面的不是:

var a = ["a", "b", "c"];

我经常很难理解 ,因为我很想用 做类比虽然,我不应该!你能解释一下这是为什么吗?

最佳答案

人们认为您应该使用文字语法 ([...]) 而不是数组构造函数至少有三个原因:

  1. 符号 Array 可以被隐藏(有人可以在给定范围内赋予它不同的含义),文字不能。

  2. 文字更短,有些人会争辩说,更清晰。

  3. Array 构造函数有一个有趣的 API:

    • 如果你只给它一个参数,那么

      • 如果该参数是一个整数,它使用该参数来设置长度。所以 new Array(10) 创建了一个 length 为 10 的空数组。¹
      • 如果参数不是数字,它会将该参数用作数组中的唯一元素。所以 new Array("10") 创建了一个只有一个元素 ("10") 的数组,因为 "10" 不是一个数字。
      • 如果参数是小数,则为错误。所以 new Array(1.1) 因“无效数组长度”或类似内容而失败。
    • 如果您给它多个参数,它会创建一个包含那么多元素的数组(即使第一个参数是整数)。所以 new Array(10, 20) 创建了一个包含两个元素(1020)的数组。

这个不同的 API 在 this part 中定义规范。


¹ “...length 为 10 的空数组” 这看起来像是一个奇怪的句子——它怎么可能是空的并且有一个 长度 为 10?! ——但这就是 JavaScript 的“数组”的工作方式。您可以说它们是稀疏 数组。或者你可以说 they aren't really arrays根本。 (标准 Array 是这样;新的 typed 数组,Int32Array 等是真正的数组。)

关于Javascript : Array anti-pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19677051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com