iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0

箭頭函式沒有arguments

arguments是類陣列

const nums = function () {
    console.log(arguments);
}
nums (10,50,100,50,5,1,1,1,500);

const nums = () => {
    console.log(arguments);
}
nums (10,50,100,50,5,1,1,1,500);

如要使用就要用其餘參數

三個...

const nums = (...arg) => { //arg為變數名稱
    console.log(arguments);
}
nums (10,50,100,50,5,1,1,1,500);

沒有自己的this

一般的function

箭頭函式時會用到外面的


  • 也無法透過call,apply,bind重新給予 this

無法作為建構函式使用

沒有prototype可以使用

可能遇到的問題

無法直接回傳物件實字

例 1

需加入()

const arrFn=()=> {data: 1};
console.log(arrFn());

A:undefined

加上括號後

const arrFn=()=> ({data: 1});
console.log(arrFn());

例 2

一般函式可以

const numFn = num || function() {return 1};
console.log(numFn);

但使用箭頭函式會出錯

const numFn = num || () => 1;
console.log(numFn);

要加上()

const numFn = num || (() => 1);
console.log(numFn);

例 3

newObj下找得到

const Fn2 = function(a) {
    this.name = a;
}
Fn2.prototype.protofn = () => {
    return this.name;
}
const newObj = new Fn2('函式');

但是實際執行使用箭頭函式時會無法取得
因為箭頭函式 this 會指向最外層

const Fn2 = function(a) {
    this.name = a;
}
Fn2.prototype.protofn = () => {
    return this.name;
}
const newObj = new Fn2('函式');
consloe.log(newObj.protofn);

undefined 或是 空值


上一篇
箭頭函式 =>
下一篇
建構函式
系列文
JavaScript亂記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言