Javascript 在一个数组中,长度是预先计算的还是每次通过迭代计算的?

Javascript 在一个数组中,长度是预先计算的还是每次通过迭代计算的?,javascript,arrays,data-structures,programming-languages,Javascript,Arrays,Data Structures,Programming Languages,样本数据 arrayList=['1','2','3','4','5'] arrayList.length为5 当我执行arrayList.length时,幕后的动作是什么 迭代arrayList并返回长度 或 长度在用于阵列的数据结构处预先计算 PS:我正在使用JavaScript,但想知道跨各种语言的一般行为说到JS,数组的长度存储为对象属性。因此,它是现成的。它不会每次执行array.length 注意(应该是一个注释,但我对此缺乏声誉)说到JS,数组的长度存储为一个对象属性。因

样本数据

arrayList=['1','2','3','4','5']

arrayList.length为5

当我执行
arrayList.length
时,幕后的动作是什么

  • 迭代arrayList并返回长度

  • 长度在用于阵列的数据结构处预先计算


PS:我正在使用JavaScript,但想知道跨各种语言的一般行为

说到JS,数组的长度存储为对象属性。因此,它是现成的。它不会每次执行
array.length


注意(应该是一个注释,但我对此缺乏声誉)

说到JS,数组的长度存储为一个对象属性。因此,它是现成的。它不会每次执行
array.length


注意(应该是一个注释,但我对此缺乏声誉)

在Javascript中,您可以更改数组的长度。但是
array.length
是一个属性。它不是每次都通过计算元素来“计算”的

请注意,当您为数组的length属性指定新值时,运行时系统将为您处理数组的增长或收缩

我想了解不同语言的一般行为

你不能一概而论:

  • 某些语言允许您更改数组的大小;例如Python、Ruby等。这不一定是通过指定长度或大小属性来完成的

    • 例如,在Python中,数组(或列表)的长度不是属性。它是
      len
      函数返回的值。可以通过添加和删除元素来更改Python数组的大小

    • 在Ruby中,数组的长度是只读属性

  • 其他语言不允许更改基元数组的长度;例如Java、Ada等

  • 对于某些语言(C、BCPL),数组的长度不是其运行时值的一部分。(实际上,在BCPL中,数组甚至不是一种类型。)这意味着应用程序无法访问数组的长度。它必须作为一个单独的变量来处理,或者通过(比如)零终止约定来推导。(后者意味着通过迭代计算数组的概念长度,但需要担心溢出。)


在Javascript中,您可以更改数组的长度。但是
array.length
是一个属性。它不是每次都通过计算元素来“计算”的

请注意,当您为数组的length属性指定新值时,运行时系统将为您处理数组的增长或收缩

我想了解不同语言的一般行为

你不能一概而论:

  • 某些语言允许您更改数组的大小;例如Python、Ruby等。这不一定是通过指定长度或大小属性来完成的

    • 例如,在Python中,数组(或列表)的长度不是属性。它是
      len
      函数返回的值。可以通过添加和删除元素来更改Python数组的大小

    • 在Ruby中,数组的长度是只读属性

  • 其他语言不允许更改基元数组的长度;例如Java、Ada等

  • 对于某些语言(C、BCPL),数组的长度不是其运行时值的一部分。(实际上,在BCPL中,数组甚至不是一种类型。)这意味着应用程序无法访问数组的长度。它必须作为一个单独的变量来处理,或者通过(比如)零终止约定来推导。(后者意味着通过迭代计算数组的概念长度,但需要担心溢出。)