es5只有兩種宣告變數的方法:var命令和function命令。es6除了新增let和const命令,後面章節還會提到,另外兩種宣告變數的方法:import命令和class命令。所以,es6一共有6種宣告變數的方法。
頂層物件,在瀏覽器環境指的是window物件,在node指的是global物件。es5之中,頂層物件的屬性與全域性變數是等價的。
es6為了改變這一點,一方面規定,為了保持相容性,var命令和function命令宣告的全域性變數,依舊是頂層物件的屬性;另一方面規定,let命令、const命令、class命令宣告的全域性變數,不屬於頂層物件的屬性。也就是說,從es6開始,全域性變數將逐步與頂層物件的屬性脫鉤。
var a = 1;
// 如果在node的repl環境,可以寫成global.a
// 或者採用通用方法,寫成this.a
window.a // 1
let b = 1;
window.b // undefined
上面**中,全域性變數a由var命令宣告,所以它是頂層物件的屬性;全域性變數b由let命令宣告,所以它不是頂層物件的屬性,返回undefined。 es5與es6的區別
es5和es6對於前端開發來說是經常都會使用的方法,他們為我們開發提供了很多便利的方法和寫法,使我們的 更加的優雅,作為乙個新人就讓我簡單總結一下es5與es6的不同。1.變數 首先在變數方面es6為我們提供了let和const這兩種新的宣告方法,let和const的出現大大的避免了變數汙染的問題,...
ES5與ES6繼承的區別
2.es6的繼承機制完全不同,實質上是先建立父類的例項物件this 所以必須先呼叫父類的super 方法 然後再用子類的建構函式修改this。3.es5的繼承時通過原型或建構函式機制來實現。4.es6通過class關鍵字定義類,裡面有構造方法,類之間通過extends關鍵字實現繼承。子類必須在con...
ES6 與 ES5 繼承的區別
es6 中有類 class 的概念,類 class 的繼承是通過 extends 來實現的,es5 中是通過設定建構函式的 prototype 屬性,來實現繼承的,es6 與 es5 的繼承有什麼區別呢?下面通過 3 個 demo,來分析它們之間的區別。1.es5 繼承 直接上 function a...