在JS中定义一个类似const的数组

时间:2012-12-14 11:28:45

标签: javascript arrays const

我想这样做(c ++):

const int SIZE = 5;
int array[SIZE];

但在JS中。我多次使用SIZE值(对于许多数组以及后面的代码),我不想让许多文字具有相同的值(以防我以后必须编辑它)。我在某处读到JS中有一个const关键字,但它并不适用于所有浏览器(不确定这是否属实,但我想要一个通用的解决方案)。越短/越简越好! ;)

3 个答案:

答案 0 :(得分:1)

你可以只指定一个

var arr = new Array(5);

初始化一个length属性为5但没有值(稀疏数组)的数组。

无法在C ++中声明变量类型,因为JS是loose typed语言,也没有固定长度的数组 - Array更像是列表。对于const关键字,请查看this question

答案 1 :(得分:1)

const关键字实际上是非标准的,并且只能由Mozilla实现因此无法保证跨浏览器工作(但显然有些浏览器实现它,请参阅Bergi的链接回答)。只需使用常规变量,并使用大写名称来表示它应该是常量:

var SIZE = 5;
var arr = new Array(SIZE);

注意:如果您向Array构造函数传递除数字以外的任何内容,它将创建一个包含length的数组和您在索引0处传递的值。在这种情况下,最好只使用文字符号(var arr = ['foo'])。另请注意,当您将数字传递给构造函数时,您只需设置初始length,并且始终可以在此之后添加或删除元素。

答案 2 :(得分:0)

Object.defineProperty(window, PI, {
    configurable: false,
    writeable: false,
    value: 3.1415
});

console.log(PI); // 3.1415

/* if 'use strict', the acts below would throw error */

PI = 0; // nothing happened

window.PI = 0; // nothing happened

delete window.PI;  // nothing happened

Object.defineProperty(window, PI, {
    configurable: true,
    writeable: true,
    value: 0
}); // nothing happened

console.log(PI); // 3.1415

数组或对象也可以使用

将其属性定义为'const'
Object.defineProperties

但最快的方式是

Object.freeze(obj_name)

但你必须确保对象本身是'const',然后它的属性才是真正安全的