1. 程式人生 > 其它 >es6宣告常量

es6宣告常量

1.const常量的使用

const 不能重複宣告

const 不屬於頂層物件window

const不存在變數提升

暫時性死區

塊級作用域

2.正常來說const是不可改變的常量,但是const在有些地方是可以被改變的

const 宣告基本資料型別的時候。number , 布林,字串,undefind是不能改變的

const 宣告 引用資料 object array 型別的時候,是可以進行改變的,

因為 修改的是引用地址的內容,並不是引用的地址。

const esObj = {
		name: 'es6',
		year: 2015
	};
	esObj.name = 'es2015';
	console.log(esObj)  //{name:"es2015",year:2015}
	
	const arr = ['es6','es7','es8'];
	arr[0] = 'es2015';
	console.log(arr)  //{'es2015','es7','es8'}

如果需求裡 需要 物件和陣列 也是不可修改的,可以用 Object.freeze().凍結這個物件或者函式。就可以不被改變了,但是他只能作為淺層次的凍結,只能凍結第一層。深層次的無法凍結

解決方案

使用遞迴 將深層次的物件或者陣列進行凍結

function myFreeze(obj){

//將第一層凍結住

Object.freeze(obj);

// Object.keys() 方法會返回一個由一個給定物件的自身可列舉屬性組成的陣列

console.log(Object.keys(obj)) //['name', 'year', 'extension']

Object.keys(obj).forEach(function(key){

    if(typeof obj[key] == 'object'){

      console.log(typeof obj[key])

      myFreeze(obj[key])

     }

})

}

3.let vs const
在專案中如果一個值需要被改變的時候使用let ,如果不改變的時候儘量使用const

本文來自部落格園,作者:小基狠努力啊,轉載請註明原文連結:https://www.cnblogs.com/ylh188/p/15672523.html