es6宣告物件以及作用域與es5對比
阿新 • • 發佈:2018-11-12
es6宣告變數:
let x=1;//宣告一個變數 const y=2;//宣告一個只讀常量,宣告時必須賦值,之後值不可修改
es5宣告變數:
var z=3;//宣告一個變數
區別:
let不存在變數提升,而var存在
ps:變數提升---先解析程式碼,獲取所有宣告的變數,然後程式碼自上而下依次執行,這將導致指令碼還未執行,而變數卻存在,只不過變數的值為undefined。
var num=2; function fun() { console.log(num);//undefined if(false){ var num=3; console.log(num);//程式碼不執行 } }
從上面程式碼可以看出,即使if語句不執行,但是num卻依然聲明瞭。
作用域:ps:變數能夠起作用的範圍
在es5中只有全域性作用域和函式作用域,而es6中新增了一個塊級作用域
var arr="love";//全域性作用域下的全域性變數 function foo() { var arr="you";//函式作用域下的區域性變數 } foo();
{ let num=.....;//塊級作用域寫法 ........ }
*.在某個作用域中用let宣告區域性變數時,該作用域會形成封閉作用域,即在變數宣告之前,該變數不可使用,並且不允許在相同的作用域下重複宣告同一個變數.
var tmp="234"; { tmp=345;//報錯 let tmp="567";//在宣告變數之前不可使用,區域已封閉 }
let garde=88; let grade=79;//報錯 let num=110; { let num=99; console.log(num);//99 } console.log(num);//110
從上面的程式碼可以看出用let宣告的變數綁定了自己所在的作用域,互不影響.