1. 程式人生 > >js中的const定義常量

js中的const定義常量

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