js中的const定義常量
阿新 • • 發佈:2018-12-14
js中一旦被定義就無法再被修改的變數,稱之為常量
在es6之前,定義變數不管是靜態還是動態都用var,例如:
var PI = Math.PI;
PI = 100;
console.log(PI) //100
但是這樣會有一個弊端,像原本並不想改變的值,如果寫錯了程式碼,可能就改變了,造成了錯誤。如上,圓周率PI是固定的值,這裡的誤操作給他賦值了100,這樣以後再用到圓周率PI來計算的時候就造成了錯誤。於是es6優化了常量的定義,避免了更改它而產生錯誤。
ES6中通過const定義常量,常量通常用大寫字母定義,多個單詞之間用_分隔。
const定義常量的特點:
1 如果修改常量會報錯
const PI = Math.PI; PI = 100; console.log(PI)
2 常量不支援宣告前置
console.log(PI);
const PI = Math.PI;
3 常量是一個塊作用域
if (true) {
const COLOR = 'red';
}
console.log(COLOR)
那麼,在es5中如何定義一個不可改變的常量呢?
在ES5中,可以凍結一個物件來定義常量來達到const定義常量的效果。
// 在ES5中通過凍結物件定義常量 var CONST = { MAX_NUM: 100, MIN_NUM: 10 } Object.freeze(CONST); // 嘗試更改 CONST.MAX_NUM = 200; console.log(CONST.MAX_NUM) //100
在ES5之前,定義常量,只能通過單例模式。只定義取值器,不定義賦值器,即可實現。
// 單例模式
var CONST = (function () {
// 定義靜態變數的容器
var _const = {
MAX_NUM: 500,
MIN_NUM: 100
}
// 返回的介面中,只定義取值器
return function (key) {
return _const[key.toUpperCase()]
}
})()
// 取值
console.log(CONST('MAX_NUM')) //500
console.log(CONST('min_num')) //100