ES6基礎(chǔ)入門(mén)教程(七)箭頭函數(shù)

箭頭函數(shù),懶人的勛章


很多時(shí)候,我懶得去寫(xiě)function。這種蹩腳的寫(xiě)法讓我的代碼看起來(lái)非常的不高級(jí)。
因?yàn)橹灰粋€(gè)人上過(guò)初中他就能從字面上翻譯我的代碼...

所以es6中增加了新的function寫(xiě)法,箭頭函數(shù)。讓你可以省略function這一串字符,甚至連方法里面的return都可以省略。

來(lái)看示例


const fun1 = x=>x*2;
console.log(fun1(2)) // 打印4

從例子中可以發(fā)現(xiàn),前面的x是我們傳進(jìn)去的參數(shù),后面的x*2是返回值。

他其實(shí)就相當(dāng)于是:

function fun(x){
    return x*2;
}

是不是非常簡(jiǎn)單?

但是它有三種情況需要注意一下:

// 沒(méi)有參數(shù) 也需要把()給寫(xiě)上,否則會(huì)報(bào)錯(cuò)
const fun = ()=>{
    console.log("沒(méi)有參數(shù)");
}
// 有參數(shù)
const fun2 = (x,y)=>{
    console.log(x);
    console.log(y);
}
// 可變參數(shù)
const fun3 = (x,y,...z)=>{
    console.log(x);
    console.log(y);
    //console.log(z);
    for(let i of z){
        console.log(i);
    }
}
fun3("hello","world",1,2,3,4,5)

此時(shí)注意如果你返回的是一個(gè)對(duì)象,需要用括號(hào)包裹起來(lái):

const fun1 = ()=>({a:1});
console.log(fun1())

如果你以為箭頭函數(shù)僅僅就是一個(gè)縮寫(xiě),那你就錯(cuò)了, 箭頭函數(shù)還有一個(gè)犀利的地方再于,他解決了一個(gè)es5中的著名bug。

es5中this的指向錯(cuò)誤問(wèn)題


請(qǐng)看代碼:

//注意 在function作用域,this默認(rèn)指的是function本身,卻不是對(duì)象本體
//在這個(gè)情況下它應(yīng)該指它的父級(jí)
const myNum={
    num:10,
    numFun:function(){
        let num = this.num;
        console.log(this.num); //10
        let numf=function(){
            console.log(this.num); //undefined
            let numz=this.num;
            console.log(numz); //undefined
        }
        numf();
    }
}
myNum.numFun()

箭頭函數(shù)中this還是指父級(jí)本體,而不是function函數(shù)作用域
更何況我還經(jīng)常使用拼音(因?yàn)槲覒械萌グ俣葯C(jī)翻)。

const myNum={
    num:10,
    numFun:function(){
        let num = this.num;
        let numf=()=>{
            let numz=this.num;
            console.log(numz);//10
        }
        numf();
    }
}
myNum.numFun()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 函數(shù)參數(shù)的默認(rèn)值 基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法。 上面代碼檢查函數(shù)l...
    陳老板_閱讀 518評(píng)論 0 1
  • 函數(shù)參數(shù)的默認(rèn)值 基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法。 上面代碼檢查函數(shù)l...
    呼呼哥閱讀 3,708評(píng)論 0 1
  • 1.函數(shù)參數(shù)的默認(rèn)值 (1).基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法。
    趙然228閱讀 832評(píng)論 0 0
  • 一、函數(shù)參數(shù)的默認(rèn)值 1.1、基本用法 ES6 允許為函數(shù)的參數(shù)設(shè)置默認(rèn)值,直接寫(xiě)在參數(shù)定義的后面 ES6 的寫(xiě)法...
    了凡和纖風(fēng)閱讀 357評(píng)論 0 0
  • 三,字符串?dāng)U展 3.1 Unicode表示法 ES6 做出了改進(jìn),只要將碼點(diǎn)放入大括號(hào),就能正確解讀該字符。有了這...
    eastbaby閱讀 1,672評(píng)論 0 8

友情鏈接更多精彩內(nèi)容