如何在javascript中创建静态数组

Ars*_*had 3 javascript jquery

我正在尝试创建一个静态数组.但我发现它可以在运行时增加数组中的项.我如何在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)

的jsfiddle

T.J*_*der 9

您可以使用以下命令冻结数组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月)中引入,因此应该存在于任何模糊的最新浏览器中.过时的浏览器不会有它们.