我想做这样的事情(c ++):
const int SIZE = 5;
int array[SIZE];
但在 JS 中。我SIZE
多次使用该值(对于许多数组以及稍后在代码中),并且我不想放置许多具有相同值的文字(以防我以后必须编辑它)。我在某处读到const
JS 中有一个关键字,但它不适用于每个浏览器(不确定这是否属实,但我想要一个通用的解决方案)。越短/越简单越好!;)
我想做这样的事情(c ++):
const int SIZE = 5;
int array[SIZE];
但在 JS 中。我SIZE
多次使用该值(对于许多数组以及稍后在代码中),并且我不想放置许多具有相同值的文字(以防我以后必须编辑它)。我在某处读到const
JS 中有一个关键字,但它不适用于每个浏览器(不确定这是否属实,但我想要一个通用的解决方案)。越短/越简单越好!;)
该const
关键字实际上是非标准的,并且仅由 Mozilla 实现,因此不能保证跨浏览器工作(但显然有些浏览器实现了它,请参阅 Bergi 答案上的链接)。只需使用常规变量,大写名称表示它应该是一个常量:
var SIZE = 5;
var arr = new Array(SIZE);
注意:如果您将除数字以外的任何内容传递给Array
构造函数,它将创建一个数组,其中包含length
您在 index 处传递的值0
。在这种情况下,最好只使用文字符号 ( var arr = ['foo']
)。另请记住,当您将数字传递给构造函数时,您只是设置了初始值length
,之后始终可以添加或删除元素。
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
数组或对象也可以将其属性定义为“常量”
Object.defineProperties
但最快的方法是
Object.freeze(obj_name)
但是您必须确保对象本身是“常量”,然后它的属性才是真正安全的