JavaScript 自學筆記28

本文详细介绍了JavaScript中不推荐使用箭头函数的四种情况,包括Event Handlers、对象方法、原型方法以及需要使用arguments的对象。同时,深入探讨了ES6中的剩余参数rest parameters的用法,如何在函数中处理不确定数量的参数,并通过实例展示了其在数组操作和动态函数中的应用。
摘要由CSDN通过智能技术生成

1. 不適合使用箭頭函數arrow function的幾種情況

(1). 不適合在Event Handlers中使用

  • 由於箭頭函數arrow function沒有屬於自己的this值,所以this引用的是全局對象。在瀏覽器範圍中,全局對象是window,而window并沒有value這個屬性。所以,如果使用this.value只能得到undefined值。

如:<input type="text" id="name" placeholder="Enter your name">

<div id="sayHi"></div>

let sayHi = document.querySelector('#sayHi');

let aName = document.querySelector('#name');

aName.addEventListener('keyup', () => { sayHi.textContent = 'Hi, ' + this.value }); // Hi, undefined

(2). 不適合在對象方法中使用

  • 與 (1) 的情況相類似,不再贅述。

如:let cat = {

name: 'lulu',

greeting: () => 'Hi, ' + this.name;

};

console.log(cat.greeting()); // TypeError: Cannot read properties of undefined (reading 'name')

(3). 不適合在原型方法中使用

  • 與 (1) 的情況相類似,不再贅述。

(4). 不適合在使用arguments對象的函數中使用

  • 因爲箭頭函數中沒有arguments對象,所以不適用所有需要使用arguments對象的函數。

2. 剩餘參數 rest parameters

  • ES6提供了一種新的參數,即剩餘參數。它以前綴三個點 ... 表示。剩餘參數以數組的形式表示不確定數量的參數。

(1). 語法:function fn (a, b, ...args) { //statements; }

  • 注意:剩餘參數必須放在參數列的最後,否則會報錯。

如:function addNumbers(a, b, c) {

console.log(a + b + c);

};

let nums = [3, 4, 5];

addNumbers(...nums); // 12

又如:function addNumbers(a, ...b, c) {

console.log(a);

}; // SyntaxError

  • 與fileter()搭配使用:

如:function keepNumbers(...nums){

return nums.filter(function (aNum) {

 return typeof aNum === 'number';

})};

const nums = keepNumbers(1, '2', 3);

console.log(nums); // [1, 3]

(2). 在箭頭函數中使用剩餘參數

如:const keepNumbers = (...nums) => {

return nums.filter(function (aNum) {

return typeof aNum === 'number';

})};

const nums = keepNumbers(1, '2', 3);

console.log(nums); // [1, 3]

(3). 在動態函數中使用剩餘函數

如:const display = new Function('...args', 'console.log(args)');

display(1, '2', 3); // [1, "2", 3]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值