Es6常用語法
阿新 • • 發佈:2018-12-20
selector all 閉包 let 作用 document 代碼塊 UNC for
1、let
var 定義的變量:只有全局作用域和函數作用域
let 定義的變量:有全局作用域和函數作用域,塊級作用域
let作用域只限於當前代碼
{ let a =12; } console.log(a); #報錯,a不存在
let聲明的變量作用域不會被提升
console.log(a); #報錯 let = 12;
在相同的作用域下不能聲明相同的變量
{ let a = 10; let a = 11; //報錯 }
for循環體現let的父子作用域
//使用var聲明,需要用到“閉包” var btns = document.querySelectorAll("button");for(var i=0;i<btns.length;i++){ (function(i){ btns[i].onclick= function (){ alert("點擊了"+i+"個按鈕") } })(i); } //let聲明 let btns = document.querySelectorAll("button"); for(let i=0;i<btns.length;i++){ btns[i].onclick= function(){ alert("點擊了"+i+"個按鈕") } }
2、const
(1)、const作用域只限於當前代碼塊
(2)、const聲明的變量作用域不會被提升
(3)、在相同的作用域下不能重復聲明
(4)、聲明的同時必須賦值,聲明後值無法改變
{ const b; //報錯 const a = 123; a = 222; //報錯 }
針對對象就不一樣了
{ const obj = { name:"lisi" } console.log(obj.name);//lisi obj.name = "zhaoliu"; console.log(obj.name);//zhaoliu } //在上面中定義的是一個常量對象,對象是儲存在內存的“堆區”,通過一個地址描述出來,在“棧區”關聯此地址。所以,obj存儲的是地址,而不是值,是可以做修改的。
Es6常用語法