ES6知識總結

var let const

爲什麼會出現let const?
引入let const 配合塊級作用域解決變量提升問題

{
  var i=2;
}
console.log(i);
//print:2
這裏var i 跳出了當前代碼塊變成了全局變量

同理

for(var i=0;i<10;i++){
}
console.log(i); 這裏i也同理
for循環類似以下代碼:
{
var i=0;
if(i<10){
i++
}
}
console.log(i)

然而let const爲解決這個問題

let

{
  let let_param=2;
}
console.log(let_param);
//ReferenceError: let_param is not defined
//其意思是let_param只能在當前代碼塊有效
##場景一:內層塊級作用域未聲明新的值 if(){}這個內層塊級作用域依然屬於外層的作用域下
{
let a=0;
if(true){
a=2;
}
console.log(a);
//print:2
}

場景二:內層塊級作用域聲明瞭新的值 這樣相當於內外層兩個都是獨立的變量

{
let a=0;
if(true){
let a=2;
}
console.log(a);
//print:0
}

const
let保證變量名指向的內存地址可變,內存裏的數據可變
但是const保證變量名指向的地址不變,不保證該地址的數據不變

//當const爲常量時
const a=1;(指向1這個內存地址)
a=2;(指向2這個內存地址)
//TypeError:"PI" is read-only
//當const爲對象時
const obj={}
obj={}//ERROR:改變了新的內存地址空間
//但是可以爲這個原來的內存地址空間 新增屬性
const _obj=[];
_obj.push(1);
const obj_obj={};
obj_obj.attr_a="attr_a";
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章