es6宣告常量
阿新 • • 發佈:2021-12-10
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