es6中的let和var const的區別

2021-10-09 10:51:01 字數 2145 閱讀 9149

通過var定義的變數,作用域是整個封閉函式,是全域的 。通過let定義的變數,作用域是在塊級或是子塊中。

console.

log(fun)

;//undefined

var fun=2;

console.

log(fun)

;//2

var fun=45;

//不會報錯

let fun=46;

//會報錯

<

/script>

變數提公升現象:瀏覽器在執行**之前會進行預解析,首先解析函式宣告,定義變數,解析完之後再對函式、變數進行執行、賦值等。

-不論var宣告的變數處於當前作用域的第幾行,都會提公升到作用域的頭部。

-var 宣告的變數會被提公升到作用域的頂部並初始化為undefined,而let宣告的變數在作用域的頂部未被初始化

for(

var i =

0; i <

5; i++

) console.

log(i)

;//5

for(

let j =

0; j <

5; j++

) console.

log(j)

;//uncaught referenceerror: i is not defined

<

/script>

let關鍵字

let關鍵字用來宣告變數,使用let宣告的變數有幾個特點:

1)不允許重複宣告

2)塊兒級作用域

3)不存在變數提公升

4)不影響作用域鏈

應用場景:以後宣告變數使用let就對了

//宣告變數

let a;

let b,c,d;

let e =

100;

let f =

521, g =

'iloveyou'

, h =

;//變數不能重複宣告

let star =

'羅志祥'

;let star =

'小豬'

;// if else while for

console.

log(girl)

;//不存在變數提公升

console.

log(song)

;// cannot access 'song' before initialization

let song =

'戀愛達人'

;//不影響作用域鏈fn(

);}<

/script>

2.2.const 關鍵字

const關鍵字用來宣告常量,const宣告有以下特點

1)宣告必須賦初始值

2)識別符號一般為大寫

3)不允許重複宣告

4)值不允許修改

5)塊兒級作用域

注意:物件屬性修改和陣列元素變化不會出發const錯誤

應用場景:宣告物件型別使用const,非物件型別宣告選擇let

//宣告常量

const

school

='尚矽谷'

;//1. 一定要賦初始值

consta;

//2. 一般常量使用大寫(潛規則)

const a =

100;

//3. 常量的值不能修改

school

='atguigu'

;//4. 塊兒級作用域

console.

log(

player);

//player is not defined

//5. 對於陣列和物件的元素修改, 不算做對常量的修改, 不會報錯

const

team=[

'uzi'

,'mxlg'

,'ming'

,'letme'];

team

.push

('meiko'

);

ES6中let和const命令

es6中新增了 let 命令,用於宣告變數,關於let有以下幾個特點 1 用法類似於var,但是所宣告的變數只在 let 命令所在的 塊內有效,實現了塊級作用域且不會汙染全域性變數。2 不存在變數提公升 3 暫時性死區 4 同乙個變數在相同作用域內不允許重複宣告 下面圍繞這四個特點進行詳細的分析 l...

ES6中let和const詳解

let和var一樣也是用來定義變數,不同之處在於let是塊級作用域,只在所定義的塊級作用域中生效,乙個花括號便是乙個塊級作用域 console.log a 我是var定義的 console.log b b is not defined 可以看出let定義的變數在全域性作用域內並沒有生效 如果我們在全...

ES6中的let和var區別

js函式中宣告變數有多種方式 var,let,this 見如下 段 var xx function test 那麼,這三種方式有什麼區別呢?區別在於作用域不同。let 宣告的變數作用域為某個 塊。而 塊的長度可大可小。當按宣告2的方式宣告乙個變數時,該變數的作用範圍於為整個function語句。當按...