一. let 和 const 命令
1.es6 新增了let
命令,用來宣告變數。它的用法類似於var
,但是所宣告的變數,只在let
命令所在的**塊內有效。
2.var
命令會發生」變數提公升「現象,即變數可以在宣告之前使用,值為undefined
。let
命令改變了語法行為,它所宣告的變數一定要在宣告後使用,否則報錯。
3.只要塊級作用域內存在let
命令,它所宣告的變數就「繫結」(binding)這個區域,不再受外部的影響。
es6 明確規定,如果區塊中存在let
和const
命令,這個區塊對這些命令宣告的變數,從一開始就形成了封閉作用域。凡是在宣告之前就使用這些變數,就會報錯。
總之,在**塊內,使用let
命令宣告變數之前,該變數都是不可用的。這在語法上,稱為「暫時性死區」(temporal dead zone,簡稱 tdz)。
4.暫時性死區的本質就是,只要一進入當前作用域,所要使用的變數就已經存在了,但是不可獲取,只有等到宣告變數的那一行**出現,才可以獲取和使用該變數。
5.let
不允許在相同作用域內,重複宣告同乙個變數。
6.es5中,內層變數可能會覆蓋外層變數,用來技術的迴圈變數會洩露為全域性變數。對此,es6用let為js提供了塊級作用域。
7.es6 規定,允許在塊級作用域內宣告函式;函式宣告類似於var
,即會提公升到全域性作用域或函式作用域的頭部;同時,函式宣告還會提公升到所在的塊級作用域的頭部。
8.考慮到環境導致的行為差異太大,應該避免在塊級作用域內宣告函式。如果確實需要,也應該寫成函式表示式,而不是函式宣告語句。
9.do表示式:在塊級作用域之前加上do
,使它變為do
表示式,然後就會返回內部最後執行的表示式的值。
10.const
宣告乙個唯讀的常量。一旦宣告,常量的值就不能改變。
11.const
的作用域與let
命令相同:只在宣告所在的塊級作用域內有效,同樣存在暫時性死區,不可重複宣告。
12.對const宣告的常量(包含物件常量)進行賦值操作會報錯。
13.頂層物件,在瀏覽器環境指的是window
物件,在 node 指的是global
物件。
14.es6 一方面規定,var
命令和function
命令宣告的全域性變數,依舊是頂層物件的屬性;另一方面規定,let
命令、const
命令、class
命令宣告的全域性變數,不屬於頂層物件的屬性。也就是說,從 es6 開始,全域性變數將逐步與頂層物件的屬性脫鉤。
ECMAScript 6 知識點梳理 2
二.變數的解構賦值 1.es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 destructuring 2.解構賦值允許指定預設值,但如果乙個陣列成員不嚴格等於undefined,預設值是不會生效的。3.解構不僅可以用於陣列,還可以用於物件。4.物件的解構與陣列有乙個重要的...
EcmaScript 6 箭頭函式
es5 var total values.reduce function a,b 0 es6 var total values.reduce a,b a b,0 箭頭即乙個函式的簡化 es5 confetti btn click function event es6 confetti btn cli...
ECMAScript6掃盲筆記 一
ecma組織推出的ecmascript是乙個標準 協議 js是協議的實現。ecmascript簡稱ecma或es。目前使用最多的是es5.1,es6正式推出是在2015年。就醬 es6 es2015 相容性 es6 es2015 支援 ie10 chrome firefox 移動端 nodejs。和...