????????????????????????????????????????????Es6
1、let 和 const 關(guān)鍵字
1姥份、let和const不允許重復(fù)聲明變量
2凡伊、let和const聲明的變量不會(huì)在預(yù)解析的時(shí)候解析(也就是沒(méi)有變量提升)
3可帽、let和const聲明的變量會(huì)被所有代碼塊限制作用范圍
let和const的區(qū)別:
let聲明的變量的值可以改變钾军,const聲明的變量的值不可以改變
let聲明的時(shí)候可以不賦值鳄袍,const聲明的時(shí)候必須賦值
2、箭頭函數(shù)
箭頭函數(shù)是ES6 里面一個(gè)簡(jiǎn)寫函數(shù)的語(yǔ)法方式
重點(diǎn):箭頭函數(shù)只能簡(jiǎn)寫賦值式函數(shù)表達(dá)式吏恭,不能簡(jiǎn)寫聲明式函數(shù)
語(yǔ)法:var fn=?(函數(shù)的行參) => { 函數(shù)體內(nèi)要執(zhí)行的代碼 }
箭頭函數(shù)的特殊性:
箭頭函數(shù)內(nèi)部沒(méi)有this拗小,箭頭函數(shù)的 this 是上下文的 this
箭頭函數(shù)內(nèi)部沒(méi)有arguments這個(gè)參數(shù)集合
函數(shù)的行參只有一個(gè)的時(shí)候可以不寫()其余情況必須寫
函數(shù)體只有一行代碼的時(shí)候厚柳,可以不寫{}散吵,并且會(huì)自動(dòng)return
4、函數(shù)傳遞參數(shù)的時(shí)候的默認(rèn)值
我們?cè)诙x函數(shù)的時(shí)候,有的時(shí)候需要一個(gè)默認(rèn)值出現(xiàn)
就是當(dāng)我不傳遞參數(shù)的時(shí)候唇礁,使用默認(rèn)值,傳遞參數(shù)了就使用傳遞的參數(shù)
在ES6 中我們可以直接把默認(rèn)值寫在函數(shù)的行參位置
這個(gè)默認(rèn)值的方式箭頭函數(shù)也可以使用
注意:箭頭函數(shù)如果你需要使用默認(rèn)值的話惨篱,那么一個(gè)參數(shù)的時(shí)候也需要寫()
5盏筐、解構(gòu)賦值
解構(gòu)賦值,就是快速的從對(duì)象或者數(shù)組中取出成員的一個(gè)語(yǔ)法方式
解構(gòu)對(duì)象
快速的從對(duì)象中獲取成員
解構(gòu)數(shù)組
快速的從數(shù)組中獲取成員
注意:
{}是專門解構(gòu)對(duì)象使用的
[]是專門解構(gòu)數(shù)組使用的
不能混用
6砸讳、模版字符串
ES5 中我們表示字符串的時(shí)候使用 ''或者""
在ES6 中琢融,我們還有一個(gè)東西可以表示字符串,就是 ``(反引號(hào))
和單引號(hào)和雙引號(hào)的區(qū)別:
1簿寂、反引號(hào)可以換行書寫漾抬,而單雙引號(hào)不可以
2、反引號(hào)可以直接在字符串里面拼接變量(需用${變量} 來(lái)拼接)
7常遂、展開(kāi)運(yùn)算符?
ES6 里面號(hào)新添加了一個(gè)運(yùn)算符 ...纳令,叫做展開(kāi)運(yùn)算符
作用是把數(shù)組展開(kāi)
合并數(shù)組的時(shí)候可以使用
也可以合并對(duì)象使用
在函數(shù)傳遞參數(shù)的時(shí)候也可以使用
8、this 關(guān)鍵字
重點(diǎn):函數(shù)內(nèi)部的this 只和函數(shù)的調(diào)用方式有關(guān)系克胳,和函數(shù)的定義方式?jīng)]有關(guān)系
全局定義的函數(shù)直接調(diào)用平绩,this => window
對(duì)象內(nèi)部的方法調(diào)用,this => 調(diào)用者
定時(shí)器的處理函數(shù)漠另,this => window
事件處理函數(shù)捏雌,this => 事件源
自調(diào)用函數(shù),this => window
9笆搓、call 和 apply 和 bind
強(qiáng)行改變this 指向的方法
call
call方法是附加在函數(shù)調(diào)用后面使用性湿,可以忽略函數(shù)本身的this 指向
語(yǔ)法:函數(shù)名.call(要改變的 this 指向纬傲,要給函數(shù)傳遞的參數(shù)1,要給函數(shù)傳遞的參數(shù)2肤频, ...)
fn()的時(shí)候嘹锁,函數(shù)內(nèi)部的this 指向 window
fn.call(obj, 1, 2)的時(shí)候,函數(shù)內(nèi)部的this 就指向了 obj 這個(gè)對(duì)象
使用call 方法的時(shí)候
會(huì)立即執(zhí)行函數(shù)
第一個(gè)參數(shù)是你要改變的函數(shù)內(nèi)部的this 指向
第二個(gè)參數(shù)開(kāi)始着裹,依次是向函數(shù)傳遞參數(shù)
apply
apply方法是附加在函數(shù)調(diào)用后面使用领猾,可以忽略函數(shù)本身的this 指向
語(yǔ)法:函數(shù)名.apply(要改變的 this 指向,[要給函數(shù)傳遞的參數(shù)1骇扇, 要給函數(shù)傳遞的參數(shù)2摔竿, ...])
fn()的時(shí)候,函數(shù)內(nèi)部的this 指向 window
fn.apply(obj, [1, 2])的時(shí)候少孝,函數(shù)內(nèi)部的this 就指向了 obj 這個(gè)對(duì)象
使用apply 方法的時(shí)候
會(huì)立即執(zhí)行函數(shù)
第一個(gè)參數(shù)是你要改變的函數(shù)內(nèi)部的this 指向
第二個(gè)參數(shù)是一個(gè)數(shù)組继低,數(shù)組里面的每一項(xiàng)依次是向函數(shù)傳遞的參數(shù)
bind
bind方法是附加在函數(shù)調(diào)用后面使用,可以忽略函數(shù)本身的this 指向
和call / apply 有一些不一樣稍走,就是不會(huì)立即執(zhí)行函數(shù)袁翁,而是返回一個(gè)已經(jīng)改變了 this 指向的函數(shù)
語(yǔ)法:var newFn = 函數(shù)名.bind(要改變的 this 指向); newFn(傳遞參數(shù))
10、JSON 方法
json是一種特殊的數(shù)據(jù)格式婿脸,本質(zhì)是一個(gè)字符串
就是對(duì)象內(nèi)部的key和value都用雙引號(hào)包裹的字符串(必須是雙引號(hào))
JSON.parse
JSON.parse是將json 格式的字符串轉(zhuǎn)換為 js 的對(duì)象或者數(shù)組
JSON.stringify
JSON.stringify是將js 的對(duì)象或者數(shù)組轉(zhuǎn)換為json 格式的字符串