**1. 變數宣告提公升?let與var的區別?**
(1)var 和 function 的提公升,let 和 const不提公升;let有塊級作用域。
《一》
如果實用的是var宣告的變數a的話,輸出結果是預期的』the window』,let a = 'the window';
let obj = ;
}};alert(obj.getobjname()());
但是現在使用let宣告,輸出的時候卻是undefined.
var宣告的全域性變數,缺省會新增到window下,作為window的乙個屬性值存在.let a = 'the window';
alert(window.a); // undefined
var a = 'the window';
alert(window.a); // the window
使用let在宣告變數的時候明顯不同, 不會作為window的屬性, 單純的就是宣告了乙個塊級變數
上面的函式中,實際呼叫是 alert(this.a) , 此時this指向window,而window下沒有對應屬性a , 所以輸出結果undefined.
《二》
function中有var a = 100;var a = 10;
(function())();
//結果:輸出undefined
宣告會提公升到function最開頭,但賦值發生在最後。
上面的**等價於:
列印a的時候,a並沒有在function內賦值,所以是undefinedvar a = 10;
(function())();
(2) 暫時性死區。建立、初始化、賦值,var是建立後立即初始化未undefined,let是建立後等賦值時初始化。未初始化就使用就會報錯。(參考方方的這篇文章
ES6知識點總結
面向過程和物件導向的對比 面向過程 物件導向 物件 物件是由屬性和方法組成的 類 class 在 es6 中新增加了類的概念,可以使用 class 關鍵字宣告乙個類,之後以這個類來例項化物件 物件導向的思維特點 抽取 抽象 物件共用的屬性和行為組織 封裝 成乙個類 模板 對類進行例項化,獲取類的物件...
ES6知識點簡單總結
let宣告的變數只能在所處遇到的快級有效。不存在變數提公升。暫時性死區,不受外部 影響。在乙個大括號中使用let關鍵字宣告的變數才具有塊級作用域,var關鍵字不具有這個特點 具有塊級作用域。使用const關鍵字宣告的常量必須賦值。常量賦值後值不能更改。varletconst 函式級作用域 塊級作用域...
es6常用知識點總結
1.定義變數的方式 let 1 沒有變數提公升 var具有變數提公升 即在當前作用域的最上面定義這個變數 但不賦值 例 console.log x var x 20 顯示undefined console.log m let m 100 報錯 2 let不可以重複宣告 例 var x 10 var ...