ES6 換了名字的變數

2021-10-12 08:55:53 字數 1609 閱讀 4131

var a =5;

let b =6;

console.

log(window.a)

; console.

log(window.b)

;

很簡單,由var宣告的a是winow的屬性,而由let宣告的b並不是window的屬性,所以let不屬於全域性物件window。

var宣告的變數全部掛載到window上,那window這個變數就會變得越來越大,同樣就會引起全域性變數汙染,es6中let 就很好的解決了這個問題。

let a =5;

let a =

6 console.

log(a)

;

let宣告的變數中這樣是不允許的,但是如果是由var宣告的變數 就會直接覆蓋掉上乙個變數的值。

console.

log(a)

;let a =

5

直接會報錯 ,但是由var宣告時 只會彈出undefined未定義

console.

log(a)

;var a =

5//同等於

var a ;

console.

log(a)

; a =

5;

所以let是不存在變數提公升的。

// 例1

var a =

6666;if

(true

)// 例2

function

fun(b =a, a =

222)

fun(

);

這兩個例子都是錯誤的,都存在暫時性死區。

顧名思義 ,暫時性死區就是在作用域內未宣告之前就使用這個變數,同理在作用域內let必須先宣告再定義,不可以先定義再宣告,其本質就是防止在變數宣告之前就使用這個變數,使**更加的安全 。

if

(false

) console.

log(a)

;

var宣告的變數作用域在全域性,可查詢到這個a,但是獲取不到值,輸出的只能nudefined,但是將var換成let宣告時,就會因為塊級作用域的影響下直接報錯,它讓我們的**更加的安全 。

每個都是乙個塊級作用域。

在es6中if後面只有一條語句是也要寫

es6 語法轉換 es5

ES6變數命名

let const 宣告變數和常量 區別於var 1.作用域只限制於當前的 塊中 console.log second console.log first 報錯 first is not defined 2.使用let宣告的變數,不存在變數提公升 3.乙個變數名,相同作用域下 不能重複宣告變數 4....

ES6定義變數

一 let命令 不存在變數提公升。es5的var會存在變數提公升問題,但是es6的let和const不會存在變數提公升問題。暫時性死區。只要在塊級作用域內存在let命令,它所宣告的變數就繫結在這個區域,不再受外部的影響。es6明確規定,如果區塊中存在let和const命令,這個區塊對這些命令宣告的變...

ES6 變數解構

es6允許按照一定的模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 destructuring 語法 let a,b,c 1,2,3 console.log a,b,c 1 2 3 順序 從陣列中取值,按照對應位置,對變數取值,這種寫法屬於 匹配模式 只要等號兩邊模式相同,左邊的變數就會被...