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 順序 從陣列中取值,按照對應位置,對變數取值,這種寫法屬於 匹配模式 只要等號兩邊模式相同,左邊的變數就會被...