2.暫時性死區
暫時性死區
是指只要塊級作用域內存在let命令,它所宣告的變數就繫結這個作用域,不會受到外部的影響。
var num=12;
if(true){
num=20;
let num;
執行之後,在num=20這一行會出現如下錯誤
從上述**,顯然可以看出,我們用var定義看乙個全域性變數,但是在
if語句中,我們首先修改的變數
num的值,然後在塊級作用域內
le又定義了名也為
num的區域性變數。導致後者繫結這個塊級作用域此,所以在
let宣告變數前,對
num賦值會報錯。
es6明確規定,如果區塊中存在let和
const
命令,這個區塊對這些命令宣告的變數,從一開始就形成了封閉作用域。凡是在宣告之前就使用這些變數,就會報錯。
總之,在**塊內,使用let
命令宣告變數之前,該變數都是不可用的。這在語法上,稱為「暫時性死區」(temporal dead zone
,簡稱tdz)。
在es6規定暫死性區和不存在變數提公升,主要是為了減少執行時錯誤,防止在變數宣告前就使用這個變數,從而導致意料之外的行為。這樣的錯誤在
es5是很常見的,現在有了這種規定,避免此類錯誤就很容易了。
ES6的let與const命令
1.塊級作用域 乙個大括號 所包起來的內容就是乙個塊級作用域 let和const就是塊級作用域,2.嚴格模式 use strict 3.如果在同乙個塊級作用域中,let乙個變數不能重複使用,每乙個變數名只能被let一次,const也是這樣的。4.const定義的是乙個常量,這個常量不能被修改,但是如...
ES6學習 let和const命令
1.let命令 所宣告的變數命令所在 塊有效 a referenceerror a is not defined.b 1for迴圈的計數器,就很適合let命令 for let i 0 i arr.length i console.log i referenceerror i is not defin...
ES6 一 let和const命令
在js中是沒有塊級作用域的,var 宣告的變數作用域是整個函式體,而let可以起到這一作用 console.log b 2 console.log a a is not defind 而let可以起到這一作用啊在js中變數和函式的宣告會提公升到當前作用域最頂部執行。這樣就會出現問題。var a 函式...