摘要:特點是塊級作用域的特點得到明顯的體現再看一個中的循環變量泄露為全局變量很明顯成了全局變量。本人目前了解的還不夠深比如中添加一個新的詞匯暫時性死區,簡稱。
(個人理解ES6就是對ES5的BUG修改和升級)
廢話不多說今天要探討的是 var與let
ECMAScript 6 入門 作者:阮一峰
下面是個人總結:
let不允許在相同作用域內,重復聲明同一個變量。
let 特點是塊級作用域
先來看一下ES5中時常出現的變量提升的問題!
var tmp = new Date(); function f() { console.log(tmp); if(false) { var tmp = "hello world"; } console.log(tmp); }
輸出結果為undefined,原因在于變量提升,導致內層的tmp變量覆蓋了外層的tmp變量。
在ES6的語法中解決的變量提升的問題 是這么實現的!
function f1() { let n = 5; if (true) { let n = 10; } console.log(n); // 5 }
這里大家可以自己試驗 將內層 和外層的 n 分別用var let 來定義 就發現
let不允許在相同作用域內,重復聲明同一個變量。
lef 特點是塊級作用域
let 的特點得到明顯的體現!
再看一個ES5中的循環變量泄露為全局變量
var s = "hello"; for (var i = 0; i < s.length; i++) { console.log(s[i]); } console.log(i); // 5
很明顯i成了全局變量。
ES6中
for (let i = 0; i < 10; i++) { // ... } console.log(i); // ReferenceError: i is not defined
這表明,let聲明的變量只在它所在的代碼塊有效。
本人目前了解的還不夠深!
比如ES6中添加一個新的詞匯 “暫時性死區”(temporal dead zone,簡稱 TDZ)。
var tmp = 123; if (true) { tmp = "abc"; // ReferenceError let tmp; }
我可以把它理解為ES6解決不了的BUG!非要給他定義成一個詞匯么?(笑死)!
也希望大牛前來解答探討!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/98943.html
摘要:前端日報精選三思而后行想提高團隊技術,來試試這個套路如何開發一個插件學習筆記塊級作用域綁定譯文詳解帶來的個重大變化中文周二放送畫圖知乎專欄第期新特性譯配置譯高性能視差滾動行代碼構建區塊鏈知乎專欄渲染器修仙之路之拷貝對象已 2017-07-25 前端日報 精選 SSR 三思而后行想提高團隊技術,來試試這個套路!如何開發一個 Atom 插件ES6學習筆記:塊級作用域綁定【譯文】詳解VUE2...
摘要:如下示例構造函數實例化對象新特性使用類實例化對象引入了類這一概念,可以通過關鍵字,定義類。否則報錯,這是類和構造函數的一個主要區別。其實,的類,可以看作是構造函數的另外一種寫法。 前言 類語法是ES6中新增的一個亮點特性,下文簡單對類的使用進行簡要說明(僅作為個人層面的理解) js傳統模式實例化對象方法——prototype 在JavaScript中,實例化一個對象的傳統使用方法是通過...
摘要:任何數據結構只要部署接口,就可以完成遍歷操作即依次處理該數據結構的成員。的遍歷某個數據結構過程是這樣的比如對進行遍歷創建一個指針對象,指向當前數組的起始位置。 Iterator 這真是毅種循環 Iterator不是array,也不是set,不是map, 它不是一個實體,而是一種訪問機制,是一個用來訪問某個對象的接口規范,為各種不同的數據結構提供統一的訪問機制。任何數據結構只要部署Ite...
閱讀 542·2023-04-26 01:39
閱讀 4518·2021-11-16 11:45
閱讀 2619·2021-09-27 13:37
閱讀 892·2021-09-01 10:50
閱讀 3598·2021-08-16 10:50
閱讀 2225·2019-08-30 15:55
閱讀 2992·2019-08-30 15:55
閱讀 2263·2019-08-30 14:07