ES6 let宣告變數(簡單易懂)

2021-10-09 03:43:10 字數 1015 閱讀 2638

let關鍵字宣告變數是在es6中引入的 ,使用let宣告變數主要有以下特點:

1 使用let宣告的變數具有塊級作用域

if(true)

console.log(a) //a is not defined

2 使用let宣告的變數沒有變數提公升

console.log(a)

let a = 10;//cannot access 'a' before initialization

3 使用let宣告的變數具有暫時性死區

var num = 10;

if(true)

4 let 宣告的變數不能重複宣告

let num = 10;

let num = 20;

console.log(num);//identifier 'num' has already been declared

下面來看乙個經典的例子

var arr = ;

for(var i=0;i<2;i++)

}arr[0]() //2

arr[1]() //2

函式呼叫的結果,輸出的都是2,為什麼會出現這樣的原因呢。主要是因為,當函式呼叫的時候,迴圈早就結束了,而變數i此時已經成為了全域性變數,並且值為2,再呼叫函式輸出i的值肯定也是2了。

我們可以把**稍微改造下 如下:

var arr = ;

for(let i=0;i<2;i++)

}arr[0]() // 0

arr[1]() // 1

這樣輸出的值就是我們所期待的了,把var換成let之後,每次迴圈的時候,變數i的值都會儲存在當前的塊級作用域內,所以在函式呼叫的時候,輸出的也是當前塊級作用域裡的儲存的值了。

ES6 let變數宣告

var 宣告的變數在window上 用let或者const去宣告變數,這個變數不會被放到window上 array.foreach function currentvalue,index,arr thisvalue 如果瀏覽器對let已經支援了,其實絕大部分情況下var都可以被替換成let,以後盡量...

ES6 let變數與var變數的區別

一,let不存在變數提公升,可以理解為let變數在使用前必須先宣告再使用不存在預解析,否則就會報錯,而var宣告的變數存在預解析即變數提公升,舉個例子 這段 的結果為undefine,原因為瀏覽器在解析 時,會先解析變數a然後逐步載入 即解析過程為 當使用let宣告變數a時,瀏覽器則會直接報錯,這是...

es6 let命令的基本用法

首先,let命令是es6新增的,也是用來宣告變數的,但它與var不同的是 只在let命令所在的 塊內有效 換一句話說就是 let命令宣告的變數只在當前作用域內有效 包括它的子作用域 那麼結合它的特徵概括起來就是 let是es6用來宣告只在當前作用域內有效,不存在變數提公升,不能重複宣告的,會形成暫時...