學(xué)習(xí)箭頭函數(shù)之前枯跑,先普及一個(gè)小知識(shí)點(diǎn)黄虱。
function show(a=1){
let a = 2;
console.log(a);
}
show();
上面的代碼告訴我們函數(shù)的參數(shù)默認(rèn)已經(jīng)被定義了稚矿,一經(jīng)聲明,就不能再用let或者const進(jìn)行聲明了悬钳,只能用var盐捷。下面一起來看箭頭函數(shù)吧偶翅。
//普通函數(shù)的寫法
function show(){
return 1;
}
show();
//箭頭函數(shù)的寫法
let show = () => 1;//箭頭的左邊是參數(shù)右邊是返回值
console.log(show());
如果想要在函數(shù)里面寫語句的時(shí)候装蓬,寫法是這樣的:
let show = (a=1,b=2) => {
console.log(a,b);
}
show();
箭頭函數(shù)在寫法和普通桉樹除了寫法不用之外踢京。還有三點(diǎn)不同
let json = {
name: 'Cyril',
show: function(){
setTimeout(function(){
console.log(this.name);//控制臺(tái)什么都沒輸出
},1000);
}
}
json.show();
這個(gè)例子大多是在vue等框架下開發(fā)遇到的問題,因?yàn)閠his指向是當(dāng)前函數(shù),先要讓他指向外面的json對(duì)象哑芹,就還要在外面進(jìn)行轉(zhuǎn)換,太麻煩婉烟,而箭頭函數(shù)則不同砌些。
let json = {
name: 'Cyril',
show: function(){
setTimeout(() => {
console.log(this.name); //Cyril
})
}
}
json.show();
第一個(gè)不同之處就是箭頭函數(shù)里的this指向的是定義函數(shù)所在的對(duì)象,而不是運(yùn)行時(shí)所在的對(duì)象朵耕。
第二個(gè)就是箭頭函數(shù)里面不能使用arguments炫隶,用了就是is not defined
解決辦法:擴(kuò)展運(yùn)算符(本章的第五小節(jié))
let show = (...a) => {
console.log(a); //[1,2,3,4,5]
}
show(1,2,3,4,5);
第三個(gè)事箭頭函數(shù)不能當(dāng)作構(gòu)造函數(shù)來用
let Show = () => {
this.name = 'Cyril';
}
let a = new Show();
console.log(a.name); //Show is not a constrator
GitHub個(gè)人主頁 :https://github.com/Cyrildog
有些鳥兒天生即使關(guān)不住的阎曹,他們的羽毛太鮮明伪阶,歌聲太甜美煞檩。也太狂野了,所以你只能放他們走栅贴,否則那天你打開籠子喂它們時(shí)斟湃,他們也會(huì)想辦法揚(yáng)長而去。
[圖片上傳失敗...(image-11e537-1528698466423)]