全局作用域 函數作用域 塊級作用域
一:塊級作用域
1.外層作用域無法讀取內層作用域的變量
2.let const聲明的變量只能先聲明,后使用。 let const都是塊級作用域!
const聲明的變量必須賦初始值且不可變,像final! 不可變是指引用不可變,也就是內存中的那片地址。
Object.freeze(要凍結對象) 引用指向的對象不可變哦! const聲明引用不可變!
3.es6六種聲明變量的方法:var function let const import class
4.模塊化編程:封裝的思想哦! 作用域
5.頂層對象 全局對象
二:變量的解構賦值
1.數組
賦值的時候,進行模式匹配! 就是按照模式匹配的方式來賦值!(解構)
模式不匹配:解構失敗
只要某種數據結構是可遍歷的,那么就可以進行解構賦值。
2.對象
解構賦值:模式匹配的時候按照key、value匹配。不同於數組是按照索引。
3.字符串
三:
五:數組擴展
1.Array.from()
方法用於將兩類對象轉為真正的數組: 類似數組的對象(array-like object)和可遍歷(iterable)的對象(包括ES6新增的數據結構Set和Map)。
2.Array.of()
方法用於將一組值,轉換為數組。
3.Array.copyWithin() 在當前數組內部,將指定位置的成員復制到其他位置(會覆蓋原有成員),然后返回當前數組。也就是說,使用這個方法,會修改當前數組。
4.數組實例的find( function(value,index,arr)) 方法: 和filter很像哦!
數組實例的findIndex()
方法的用法與find
方法非常類似,返回第一個符合條件的數組成員的位置,如果所有成員都不符合條件,則返回-1
。
5.數組實例的fill()方法,使用給定的值填充數組。
6.數組實例的遍歷:keys() 鍵名的遍歷
values() 鍵值得遍歷
entries() 鍵值對的遍歷
六:對象的擴展
1.es6變量和方法的簡寫
2.Object.is() “===”的改進版 一是+0
不等於-0
,二是NaN
等於自身。
3.Object.assign
方法用於對象的合並,將源對象(source)的所有可枚舉屬性,復制到目標對象(target)。
同名屬性會覆蓋,后面的覆蓋前面的。
4.Object.assign
拷貝的屬性是有限制的,只拷貝源對象的自身屬性(不拷貝繼承屬性),也不拷貝不可枚舉的屬性(enumerable: false
)。 ??????
有一些函數庫提供Object.assign
的定制版本(比如Lodash的_.defaultsDeep
方法),可以解決淺拷貝的問題,得到深拷貝的合並。
七:Symbol JavaScript的第七種數據類型.
Number String Object Boolean Undefined Null
八:Set和Map數據結構
1.Set不會添加重復的值!
2.WeakSet: 首先,WeakSet 的成員只能是對象,而不能是其他類型的值。
其次,弱引用,引用存在也會被GC機制回收。
3.Map: 本質上是鍵值對的集合(Hash 結構),但是傳統上只能用字符串當作鍵。這給它的使用帶來了很大的限制。
WeakMap: 首先,WeakMap
只接受對象作為鍵名(null
除外),不接受其他類型的值作為鍵名。
九:Iterator 和 for...of 循環
1.Javascript表示集合的數據結構: 數組 對象 Map Set
遍歷器(Iterator)就是這樣一種機制。它是一種接口,為各種不同的數據結構提供統一的訪問機制。
十:Promise對象
1.有了Promise對象,就可以將異步操作以同步操作的流程表達出來,避免層層嵌套的回調函數。
2.Promise對象,容器,里面保存着某個未來才會結束的事件的結果。
3.Promise對象代表一個異步操作,三種狀態:Pending、Resolved、Rejected。 一個異步操作是一個對象。
異步操作的結果才可以更改狀態。
狀態一旦改變就會凝固。
4.then()方法:它的作用是為 Promise 實例添加狀態改變時的回調函數。前面說過,then
方法的第一個參數是Resolved
狀態的回調函數,第二個參數(可選)是Rejected
狀態的回調函數。
pending-》resolved pending-》rejected:狀態改變執行回調!
5.jQuery的所有Ajax操作函數,默認返回的就是一個deferred對象。
6.Promise.resolve() 有時需要將現有對象轉為Promise對象,Promise.resolve
方法就起到這個作用。
十一:Class
1.類的數據類型是函數,且類本身指向構造函數
2.由於類的方法都定義在prototype對象上面
3.表達式就是變量? 就是一個賦值表達式?
4.constructor:類的構造函數,constructor
方法默認返回實例對象(即this
),完全可以指定返回另外一個對象。
十二:Reflect對象
1.Reflect
對象與Proxy
對象一樣,也是 ES6 為了操作對象而提供的新 API。
2.函數式行為! 語言的一種完善!
十三:Proxy對象
1.對象的攔截器 訪問對象時候的代理。
ES6 知識點總覽:
let/const 變量的解構賦值 字符串擴展 正則擴展 數值擴展 函數擴展 數組擴展 對象擴展 Symbol Set和Map數據結構 Promise對象 Class
模塊加載方案 Proxy Reflect
發現的問題
1.可遍歷解構? Iterator
2.重載和覆蓋? 好久沒看都忘記了啊!
3.深拷貝和淺拷貝?