ES6 新增關鍵字let const

2021-08-06 06:03:13 字數 1535 閱讀 6675

(1)es6中新增的let關鍵字

之前我們宣告乙個變數時,都是使用關鍵字var,那新增加的let和var有什麼不同呢?

var的不足之處一:

var arr=;

for (vari=0;i<10;i++); } 

arr[8]();   // console.log(i);  的結果為 10 

同樣的換成 let之後就沒問題:

var arr=;

for (leti=0;i<10;i++);

} arr[8]();   // console.log(i);  的結果為 8

這是由於,本來的js是沒有塊級作用域的,用var定義i時,雖然在for迴圈中定義,但在執行時,依然會被提公升。當執行arr[8]()時,迴圈已經完成,這時的i=10;所以再去執行 arr[8]()時,console.log(i),i=10;

而是用let定義i,i就只能存在與for迴圈的塊級作用域,不會被提公升。

(塊,只的是 一組{}之間的部分。)

var的不足之處二:

也就是變數提公升。var 會被提公升定義;let不會。

var a=1;

(function())();   //undefined 表示只宣告,為賦值;

同樣的換做let之後:

var a=1;

(function())();   //報錯: uncaught referenceerror: a is not defined(…) 

這是因為,用let定義後,變數a的定義不會被提公升。且在塊級作用域內封閉,不會受到外界a的影響。在使用a(alert(a))時,a尚未定義,所以報錯。因此,在使用let時,一定注意,變數要先宣告後使用。

使用let時注意:

注意一: 在同一塊級作用域下,不能重複宣告同乙個變數。

//報錯

//報錯

注意二:在函式內,不能用let重新宣告函式的引數。

function say(word)

say('hi');  //報錯

(2)es6中新增的const關鍵字

const是常量(contsant)的縮寫,與let相比,const專門用來宣告乙個常量。

特點:const name='a';

name='b';   //報錯

if(1)

alert(name);  //報錯

if(1)  

var name='a';

const name='b';  //報錯

const name;   //報錯

注意:當常量為乙個物件時:

const person=;

person.name='b';

person.age='13';

console.log(person)  // ;  輸出正常。

這是由於const宣告了乙個引用型別的常量,使用的是傳址賦值。也就是不修改位址,只修改位址中的值。

ES6新增關鍵字

let 關鍵字特點塊級作用域 if語句和for語句之類的大括號會隔離作用域if true console.log a 10 console.log b 報錯 referenceerror b is not definedconsole.log a 因為有變數宣告的提公升所以會輸出 undefined...

es6之let,const關鍵字

在es5中沒有塊級作用域,只有函式作用域和全域性作用域,例如不能成為乙個作用域,但在es6中可以 for var i 0 i 4 i console.log i i 4這是因為i是在全域性的,最後列印的是for迴圈裡面最後的結果。用let替換var則結果為not defined。for let i ...

ES6 之關鍵字 let

正如大家都熟悉的,我們平時在寫 的時候,用var 宣告乙個變數,除此之外,也再沒有接觸到其它的關鍵字了,不管我們宣告什麼樣型別得變數,都用var 搞定了,很方便,但是es6 告訴你,除了var,還可以試試 let 來宣告變數。那麼,既然var 方便,為什麼還要let 來宣告,這麼說 var 宣告 一...