为什么我们不能在Javascript中提供数组大小?

时间:2017-11-20 11:50:45

标签: javascript

为什么我们不能在JavaScript中提供数组大小?

我的意思是即使可能为什么我们为什么只是简单地定义数组呢?

4 个答案:

答案 0 :(得分:2)

因为JavaScript中的标准数组根本不是真正的数组(spec | post on my blog),所以它们只是由Array.prototype支持的对象,并且具有特殊处理能力属性名称类("array indexes"),特殊length属性和内置文字表示法。它们不像其他语言那样是连续的内存块(当然,除非优化)。

  

我心中有一个问题,为什么我们不能在JavaScript中提供数组大小?

您可以通过length创建一个给定Array(n)的数组,其中n的长度为数字。但同样,它并没有为许多插槽或任何东西预先分配内存。您最终会得到一个稀疏数组,length设置为 n 且其中没有条目:



var a = Array(42);
console.log(a.length);      // 42
console.log(0 in a);        // false, it doesn't have an entry 0
a.forEach(function(entry) { // Never calls the callback
    console.log(entry);     // because the array is empty
});




  

我的意思是即使有可能为什么我们只是简单地定义数组呢?

因为它没有用处。

现在,对于typed arraysUint8Array和类似的),我们确实使用特定长度(var a = new Uint8Array(42);)创建它们,并且该长度是固定的(不能更改),因为它们& #39; re true arrays。

答案 1 :(得分:0)

您可以提供数组大小。如果未给出,则可以动态添加多个值。

var arr = new Array(5);

答案 2 :(得分:0)

  1. 您可以在java脚本中提供数组大小。
  2. Java脚本数组与C语言中的数组不同。 您可以在以下链接上阅读更多内容 understanding-javascript-arrays

答案 3 :(得分:-1)

您可以提供数组的大小,并且该数组的大小不会在程序中更改。

Array是Array.prototype支持的对象,因此有一个名为seal的函数。

var myArray = Object.seal([5, 6, "saurabh", "text"]); // this is an array of size 4 fixed.
//myArray.push('new text'); //throw exception error
console.log(myArray[2]); //"saurabh"
myArray[0] = "change text";
console.log("print myArray: ", myArray);

你可以在这里阅读更多内容: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal