Es6之 let和const命令與var的區別

2021-10-04 11:50:51 字數 1584 閱讀 7835

let

一.基本用法

es6新增了let和const命令,用來宣告變數,let的用法類似於var,但是所有的宣告變數,只在let所在的**塊內有效。

console.log(b); //10

console.log(a);//uncaught referenceerror: a is not defined

二.不存在變數提公升

var 命令會發生變數提公升,就是變數可以在宣告之前使用,值為undefined

console.log(a);//undefined

var a = 2;

console.log(a);//2

而let賓亮未宣告之前使用將會報錯

console.log(b); // 報錯referenceerror

let b = 2;

console.log(b)//2

三、不允許重複宣告

let不允許在相同的作用域內重複宣告同乙個變數,const宣告的常量也不允許重複宣告

function fun()

// 報錯 uncaught syntaxerror: identifier 『a』 has already been declared

四、暫時性死區

當塊級作用域存在let命令,它所宣告的變數會「繫結在這個區域」,不受外部影響。使用let命令宣告變數之前,該變數都是不可用的。這在語法上,稱為「暫時性死區」(temporal dead zone,簡稱 tdz)。

var tmp = 10;

if (true)

解析:由於存在全域性變數tmp,但是塊級作用域內let又宣告了乙個區域性變數tmp,同乙個作用域內,不能重複宣告同乙個變數,所以在let宣告前,對tmp進行賦值則報錯

const

1.const宣告乙個唯讀的常量,一旦宣告,常量的值不能改變。

const pi = 3.14;

console.log(pi);

pi = 3;

console.log(pi);// uncaught typeerror: assignment to constant variable.

2.對於const,只宣告不賦值,就會報錯了。

const a;

console.log(a);//uncaught syntaxerror: missing initializer in const declaration

3.const命令宣告的常量不提公升,也存在暫時性死區,只能在宣告的位置後面使用

if (true)

if (true)

4.const的作用域與let命令相同:只在宣告所在的塊級作用域內有效

f (true)

console.log(b);//報錯

if (true)

總結:

var:變數提公升(無論宣告在何處,都會被提至其所在作用於的頂部)

let:無變數提公升(未到let宣告時,是無法訪問該變數的)

const:無變數提公升,宣告乙個基本型別的時候為常量,不可修改;宣告物件可以修改

ES6之let和const命令(筆記)

1 let命令 console.log a undefined console.log b 112 const命令 3 設定跨模組常量模組 export consta 1 import as constant from constants console.log constant.a import ...

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