我正在尝试创建一个静态数组.但我发现它可以在运行时增加数组中的项.我如何在javascript中实现静态数组?为什么数组在javascript中是可变的?
var a = [];
//var a = new Array(3);
for (var i = 0; i < 5; i++) {
//a.push(i);
a[i] = i;
}
document.write(a);
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令冻结数组Object.freeze:
"use strict";
var a = Object.freeze([0, 1, 2]);
console.log(a);
try {
a.push(3); // Error
} catch (e) {
console.error(e);
}
try {
a[0] = "zero"; // Error
} catch (e) {
console.error(e);
}
console.log(a);Run Code Online (Sandbox Code Playgroud)
这是不允许的
有关详细信息,请参阅链接.如果您只想保持大小固定但希望允许更改条目的值,请Object.seal改用.
请注意,尝试更改现有属性是否会导致错误(与静默失败相反)取决于您是否处于严格模式.
freeze并且seal在ES5(2009年6月)中引入,因此应该存在于任何模糊的最新浏览器中.过时的浏览器不会有它们.