ES6的let命令(二)

2021-07-31 14:31:40 字數 735 閱讀 4433

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 函式...