ES6常見知識點總結(未完)
阿新 • • 發佈:2018-12-26
1.var 變數提升
使用var宣告的變數,宣告會被提升到作用域的頂部
舉幾個例子:
eg1:
console.log(a) // undefined var a = 1
可以看做這樣
var a console.log(a) a=1
eg2:
var a = 10 var a console.log(a) // 10
可以看作
var a; var a; a=10; console.log(a)
eg3,函式宣告也會提升,函式提升會把整個函式挪到作用域頂部:
console.log(a) // ƒ a() {} var a = 1 functiona() {}
看作:
var a; function a() {} console.log(a) // ƒ a() {} a = 1
2.var,let,const對比
1.在全域性作用域下,var宣告的變數,會掛載到window上,其他二者不會
2.三者都存在提升,但是let,const的提升和var不同:雖然變數在編譯的環節中就被告知在這塊作用域中可以訪問,但是訪問是受限制的(形成暫時性死區):
所以let const必須先聲明後使用
var a = 1; function test1(){ console.log(a); } functiontest2(){ console.log(a); let a; // 執行到上一步時就已經知道該作用域內有a,所以不會再往外層作用域找,但是形成了暫時性死區,這裡的a無法訪問 } test1() // 1 test2() // error, a is undefined
3.let
和 const
作用基本一致,但是後者宣告的變數不能再次賦值
3.模組化
3.1為什麼要模組化?
3.2實現模組化的方法有哪些?各有什麼特點?