箭頭和普通函數(shù)的區(qū)別是什么采够?
1.第一個區(qū)別就是寫法上的區(qū)別?箭頭函數(shù)省略了聲明函數(shù)的關(guān)鍵字function?在函數(shù)和代碼塊之間用一個=>代替
2.箭頭函數(shù)中的this始終指向箭頭函數(shù)聲明時所在的對象
3.普通函數(shù)中的this指向調(diào)用函數(shù)的對象
例:
<script>
function?fn()?{
??????console.log(this)
????}
fn()(這種調(diào)用等同于window.fn(),省略了window,此時函數(shù)this指向window)
?let?obj?=?{
??????name:?'zhangsan',
??????fun()?{
????????console.log(this)
??????}
????}
????obj.fun()(函數(shù)被obj調(diào)用吨枉,所以此是this指向obj實例對象)
??var?fn?=?()?=>?{
??????console.log(this)
????}
? ? fn()(箭頭函數(shù)中的this指向始終指向箭頭函數(shù)聲明時所在的對象混埠,函數(shù)在window中聲明揍堰,所以this指向window)
</script>
箭頭函數(shù)的寫法都有哪些鹏浅?
第一種寫法?當箭頭函數(shù)只接受一個參數(shù)?并且返回值是這個參數(shù)的時候,當箭頭函數(shù)有且僅有一個參數(shù)時可以省略()?
let?fn?=?a?=>?a
????//?上面的箭頭函數(shù)等價于下面的這種寫法
????let?fn?=?function(a)?{
??????return?a
????}
第二種寫法?當箭頭函數(shù)只接受一個參數(shù)?并且返回的是一個簡單的邏輯的時候
let?fn?=?a?=>?a+1
?//?上面的箭頭函數(shù)等價于下面的這種寫法
????let?fu?=?function(a)?{
??????return?a?+?1
????}
? ?第三種寫法是當箭頭函數(shù)接受多個數(shù)據(jù)?并且返回一個簡單的邏輯的時候
?let?fn?=?(a,?b,?c)?=>?a?+?b?+?c?
?//?上面的箭頭函數(shù)等價于下面的這種寫法
????let?fn?=?function(a,?b,?c)?{
??????return?a?+?b?+?c
????}
箭頭函數(shù)的第四種寫法?如果使用箭頭函數(shù)只是想單純的返回一個對象?則需要給對象添加()
let?fn?=?()?=>?({name:?'zhangsan',?age:?15})
箭頭的函數(shù)的第五種寫法
?let?fn?=?(a,?b,?c)?=>?{
??????console.log(a?+?b?+?c)
????}
????fn(1,?2,?3)