当前位置: 首页 > 面试题库 >

声明JavaScript数组时,“ Array()”和“ []”之间有什么区别?

柳刚豪
2023-03-14
问题内容

声明这样的数组之间的真正区别是什么:

var myArray = new Array();

var myArray = [];

问题答案:

有所不同,但在该示例中没有区别。

使用更冗长的方法:new Array()在参数中确实有一个额外的选择:如果将数字传递给构造函数,则将获得该长度的数组:

x = new Array(5);
alert(x.length); // 5

为了说明创建数组的不同方法:

var a = [],            // these are the same
    b = new Array(),   // a and b are arrays with length 0

    c = ['foo', 'bar'],           // these are the same
    d = new Array('foo', 'bar'),  // c and d are arrays with 2 strings

    // these are different:
    e = [3]             // e.length == 1, e[0] == 3
    f = new Array(3),   // f.length == 3, f[0] == undefined

;

另一个区别是,使用时,newArray()您可以设置数组的大小,这会影响堆栈的大小。如果您遇到堆栈溢出(Array.push与Array.unshift的性能)(当数组的大小超过堆栈的大小并必须重新创建它时会发生这种情况),这将很有用。因此,实际上,根据使用情况,使用时newArray()可以提高性能,因为可以防止发生溢出。

如该答案所指出的,newArray(5)实际上不会将五个undefined项目添加到数组中。它只是增加了五个项目的空间。请注意,使用Array这种方式很难依靠它来array.length进行计算。



 类似资料:
  • 问题内容: 两者的含义使我难以理解。 问题答案: 甲声明引入的标识符和描述了它的类型,无论是类型,对象,或功能。声明是编译器需要接受对该标识符的引用的内容。这些是声明: 甲定义实际实例化/器具该标识符。这是什么样的连接器需要以链接引用这些实体。这些是与上述声明相对应的定义: 可以使用定义代替声明。 可以根据需要多次声明标识符。因此,以下内容在C和C ++中是合法的: 但是,必须定义一次。如果忘记定

  • 人们似乎在说malloc在使用数组时有多棒,当你不知道一个数组在编译时有多少元素时,你可以使用它(?)。没有malloc你就不能这么做吗?例如,如果我们知道一个字符串的最大长度为10,那么下面的结果是否足够接近同一事物?。。。除了能够释放内存之外。 和

  • %1有编译器错误,而%2是合法的。 为什么变量声明的类型必须与我们传递给对象类型的类型匹配(不允许派生类型)?我使用的数组如下所示,这是完全正确的: 有人能告诉我为什么集合必须声明为条件2吗?谢谢

  • 问题内容: 是什么区别,并宣布一组样式时的元素,什么是决定使用哪一个时发挥作用的语义? 问题答案: 是的,它们是不同的… 是[ID选择器,用于定位具有唯一ID的_单个_特定元素,但。是一个类选择器,用于将特定类的 多个 元素作为目标。换一种方式: 将为带有属性声明的 单个 元素设置样式 将使用属性设置_所有_元素的样式(您也可以将多个类分配给一个元素,只需将它们用空格隔开,例如) 典型用途 一般来

  • 问题内容: public class SomeClass { private HashSet contents = new HashSet (); private Set contents2 = new HashSet (); } 有什么不同?最终它们都是不是吗?第二个对我来说似乎是错误的,但是我看到它经常被使用,接受和工作。 问题答案: 是一个接口,并且是实现该接口的类。 将变量声明为类型意味着

  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型