ES6 中的 TDZ(暫時性死區)

2022-09-20 19:33:08 字數 699 閱讀 6885

temporal dead zone(tdz) 是 es6(es2015) 中對作用域新的專用語義。

在 es6 之前,js 的 scope 只有兩種,全域性作用域和函式作用域,

在 es6 種出現了塊級作用域,即使用 let/const 可以定義塊級作用域

let/const 是使用區塊作用域;var 是使用函式作用域

在 let/const 宣告之前就訪問對應的變數與常量,會丟擲 referenceerror 錯誤;但在 var 宣告之前就訪問對應的變數,則會得到 undefined

es6 明確規定,如果區塊中存在 let 和 const 命令,這個區塊對這些命令宣告的變數,從一開始就形成了封閉作用域。凡是在宣告之前就使用這些變數,就會報錯。 總之,在**塊內,使用 let 命令宣告變數之前,該變數都是不可用的。這在語法上,稱為 「暫時性死區」(temporal dead zone,簡稱 tdz)。

JS的暫時性死區問題

1.基於let建立變數,會把大部分 當作乙個私有的塊級作用域 類似於函式的私有作用域 在這裡也是重新檢測語法規範,看一下是否是基於新語法建立的變數,如果是按照新語法規範來解析 2.console.log a uncaught referencerrror a is not defined conso...

ES6系列 詳解ES6中的Map

map類似於物件,都用於儲存key value結構的資料。但是,在傳統的物件上,只能用字串或者symbol來作為鍵名。然而,map與物件最大的差別就在於它可以各種資料型別作為鍵名。map是乙個建構函式,用於例項化例項。const m newmap const o m.set o,content m....

ES6學習筆記之ES6中的模組

1 import和export基本使用 重點 在es6中新增了js檔案的暴露和引入的新寫法 import和export node es6 require import exports.export module.exports default 使用export const 暴露函式名暴露函式,imp...