使用箭頭函式的目的:引入箭頭函式目的是更加更加簡短的函式寫法並且不繫結this,箭頭函式的語法比函式表示式更加簡潔
使用場景:箭頭函式更加適用於哪些本來需要匿名函式的地方
- 定義語法:
const fn = () => {
}
- 使用方式一:括號裡面加形參
// 箭頭函式
const fn = (x) => {
console.log(x);
}
fn(1)
- 使用方式二:如果只有一個形參,那麼括號可以省略
const fn1 = x => {
console.log(x);
}
fn1(88)
- 使用方式三:只有一行程式碼的時候,我們可以省略大括號
const fn2 = x => x+x;
console.log(fn2(9))
- 使用方式四:箭頭函式直接返回一個物件
const fn3 = (uname) => ({
name:uname
})
console.log(fn3('成龍'));
注意:返回一個物件需要用需要用括號將{}包起來。
- 應用一:利用剩餘變數傳參的方式進行箭頭函式求和
// 箭頭函式的引數: // 利用箭頭函式求和,我們並不知道引數幾個,所以用剩餘引數的寫法,它將所有的引數變成一個陣列 const getSum = (...arr) => { console.log('剩餘引數的值為', arr); let sum = 0; for (let i=0; i< arr.length; i++) { sum +=arr[i] } return sum; } console.log(getSum(2, 3)); console.log(getSum(2, 3, 4));
- 箭頭函式this的用法:箭頭函式不會建立自己的this,他只會從自己的作用域鏈的上一層沿用this。
例:
//箭頭函式內部this 是上一層this的指向,所以這個this輸出的是window
const fn4 = () => {
console.log(this);
}
fn4()
物件方法箭頭函式this
// 物件方法箭頭函式this 物件沒有作用域,所以物件中的箭頭方法指向的還是window
const obj = {
name:"yansunda",
sayHi: () => {
console.log(22);
console.log(this);
}
}
obj.sayHi();
物件方法的函式里面再寫箭頭函式的this
// 物件方法的函式里面再寫箭頭函式的this
//只有函式里面才有this,然後箭頭函式里面的this指的是上一層的this,所以sayHi的呼叫者是obj1,所以this指向obj1
const obj1 = {
name:'yansunda',
sayHi:function(){
console.log(this);
let fn = () => {
console.log(333);
console.log(this);///箭頭函式指的是sayHi中的this,而sayHi的呼叫者是obj1,所以this指向obj1
console.log(this.name);
}
fn()
}
}
obj1.sayHi()