为什么我们不能在JavaScript中提供数组大小?
我的意思是即使可能为什么我们为什么只是简单地定义数组呢?
答案 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 arrays(Uint8Array
和类似的),我们确实使用特定长度(var a = new Uint8Array(42);
)创建它们,并且该长度是固定的(不能更改),因为它们& #39; re true arrays。
答案 1 :(得分:0)
您可以提供数组大小。如果未给出,则可以动态添加多个值。
var arr = new Array(5);
答案 2 :(得分:0)
答案 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