Javascript中数组属性的介绍

不同的是java语言,Javascript中的数组有三个特点:



1。没有类型。数组的成员可以是任何类型,而相同的数组也可以由许多不同类型的成员组成。

2。长度是可变的,数组的长度可以动态改变,因此在Javascript中没有数组访问的越界问题。

三.不连续性。数组中成员的位置可以是连续的(0, 1, 2,3…),它可能是不连续的。任何数组都有一个名为长度的属性。当数组成员是连续的时,长度值与数组成员的数目相同。当数组成员不连续时,长度值大于数组成员数,不连续数组的读写性能比连续数组稍差。



实验uff1a



复制代码代码如下所示:

var 42,示例文本

console.log(O); / / { 42,示例文本

o 3 } = 27;数组是动态的。

console.log(O); / / { 42,示例文本

o 5 } = 99。

console.log(O); / / { 42,示例文本





从上面的例子中可以看到,对于不连续数组,当丢失的成员被访问时,Javascript返回到未定义的位置。如果数组是连续的,但其中一个成员未定义,访问数组的结果是相同的。



复制代码代码如下所示:

var = 42,示例文本

console.log(一); / / { 42,示例文本





数组是不连续的、缺少的成员、连续的数组,但成员是未定义的。在这两种情况下,访问数组内容的结果是相同的,但两者之间仍然存在一些细微的差别,主要是对数组键的访问:



复制代码代码如下所示:

console.log(4 O); / /假

console.log(4个); / /真的





你可以看到,这两例虽然获得的结果,但其内部机制是完全不同的:在不连续的一个成员的缺失的情况下的阵列,所以当访问成员,Javascript返回未定义的;在连续排列的情况下,所有成员都在那里,只是一些对特殊值的成员,为未定义。



从上面的例子中,我们可以看到,在本质上只是Javascript数组的个数是重点对象,这是从普通的键-值对的没有区别。事实上,在读写操作的数组,Javascript将设法转换参数为一个正整数,如果转换成功将数组操作(更新数组的长度),如果不能将一个字符串参数普通对象的读写操作之后。当然,在JAVASCRPT解释器的实现,我们已经做了很多对阵列的性能优化,以数量特征的关键。因此,在实际使用过程中,如果对象的关键是所有数字,则直接使用数组对象将得到更有效的结果。



在定义数组的过程中,Javascript允许出现一个额外的逗号,并且在两个逗号之间不允许有数组成员:



复制代码代码如下所示:

var x = { 1,2,3,}; / /尾逗号会被忽略。

console.log(x.length); / / 3



var = { 1, 3 };可以忽略成员。

console.log(Y); / / { 1,3 },

console.log(1 Y); / /假

console.log(y.length); / / 3





对于数组的创建,Javascript支持四种方法:



1。使用文字数量(如上述示例中的括号表达式)直接创建数组对象。

2。使用数组()构造函数,不传递任何参数。在这种情况下,创建空数组,其效果相当于{ }。

三.使用数组()构造函数并传递一个正整数作为数组的长度。在这种情况下,Javascript将保留相应的存储空间来存储数组。值得注意的是数组的键此时没有定义,即数组中没有成员。其效果相当于{,},,}的方法。

4。使用数组()构造函数传递数组的成员。



实验uff1a



复制代码代码如下所示:

新数组(10);预分配内存,但尚未定义索引。

console.log(3,Z); / /假

var =新数组(42, 33, 99,测试

console.log(M); / / { 42, 33, 99,试验



在ECMAscript 5标准,您可以使用Array.isArray()来确定一个对象是否是一个数组或不。

复制代码代码如下所示:

Array.isArray({ }); / /真的

Array.isArray({ }); / /假