JS中的箭头函数

这篇具有很好参考价值的文章主要介绍了JS中的箭头函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在JavaScript中,箭头函数是一种简化的函数语法,它在ES6(ECMAScript 2015)引入。箭头函数的语法比传统的function表达式更简洁,同时还有一些特性,例如继承外部作用域的this值。

箭头函数的基本语法如下:

(param1, param2, ..., paramN) => { statements }
(param1, param2, ..., paramN) => expression

 

当箭头函数只有一个参数时,可以省略括号:

param => { statements }
param => expression

 

当函数体只包含一个返回值表达式时,可以省略花括号并直接返回该表达式的值:

(param1, param2) => param1 + param2

 



需要注意的是,箭头函数有以下特性:

1. 没有自己的this值 :箭头函数内的this值继承自包含它的函数作用域,这有助于解决一些this指向问题。
2. 没有arguments对象 :在箭头函数内部,无法访问传统函数中的arguments对象。但你可以使用剩余参数(...rest)语法来获取参数列表。
3. 不能用作构造函数 :箭头函数不能用作构造函数,因此不能使用new运算符实例化。
4. 没有原型 :箭头函数没有prototype属性,因为它们不能作为构造函数使用。

 文章来源地址https://www.toymoban.com/news/detail-438617.html


更多箭头函数的用法

1. 链式调用:

箭头函数的简洁语法使得在链式调用中使用它们变得更加容易。例如,我们可以在数组上使用多个数组方法并将箭头函数作为回调函数:

const numbers = [1, 2, 3, 4, 5];

const doubledAndFiltered = numbers
  .map(num => num   2)
  .filter(num => num > 5);

console.log(doubledAndFiltered); // [6, 8, 10]

 


2. 事件处理程序:

箭头函数可以方便地用作事件处理程序,因为它们继承了外部作用域的 this 值。这样就避免了使用 bind 来绑定事件处理程序的需要。例如:

class Button {
  constructor() {
    this.buttonElement = document.createElement('button');
    this.buttonElement.textContent = 'Click me!';
    this.buttonElement.addEventListener('click', () => this.handleClick());
    document.body.appendChild(this.buttonElement);
  }

  handleClick() {
    console.log('Button clicked!');
  }
}

const button = new Button();

 


3. 在数组方法中使用:

常见的数组方法,如 filter 、 reduce 、 forEach 等,也可以与箭头函数一起使用,以简化代码并使其更具可读性:

const numbers = [1, 2, 3, 4, 5];

const evenNumbers = numbers.filter(num => num % 2 === 0);

console.log(evenNumbers); // [2, 4]

const sum = numbers.reduce((acc, num) => acc + num, 0);

console.log(sum); // 15

numbers.forEach((num, index) => console.log( Index ${index}: ${num} ));

 


4. 立即调用的箭头函数:

箭头函数还可以作为立即调用函数表达式(IIFE)使用,这在某些场景下有助于限制变量的作用域:

const result = (() => {
  const localVar = 'I am only available within this IIFE';
  return localVar.toUpperCase();
})();

console.log(result); // 'I AM ONLY AVAILABLE WITHIN THIS IIFE'

 


5. 对象字面量和箭头函数:

在箭头函数中直接返回对象字面量时,需要注意语法。由于大括号 {} 在箭头函数中被解释为代码块,而不是对象字面量,因此需要在对象字面量周围添加额外的括号:

const getObject = () => ({ key: 'value' });

console.log(getObject()); // { key: 'value' }

 


6. 多行箭头函数:

虽然箭头函数通常用于简洁的单行函数,但它们也可以用于多行函数。在这种情况下,需要使用大括号包裹函数体,并在需要返回值时使用 return 关键字:

const addWithLogging = (a, b) => {
  console.log( Adding ${a} and ${b} );
  return a + b;
};

console.log(addWithLogging(3, 4)); // 输出 "Adding 3 and 4",然后输出 7

 


7. 箭头函数与解构参数:

箭头函数可以与解构参数一起使用,可以更简洁地处理对象或数组。以下是一些示例:

// 对象解构
const users = [
  { id: 1, name: 'Alice', age: 30 },
  { id: 2, name: 'Bob', age: 25 },
  { id: 3, name: 'Charlie', age: 35 },
];

const getUserNames = users.map(({ name }) => name);
console.log(getUserNames); // 输出:['Alice', 'Bob', 'Charlie']

// 数组解构
const points = [
  [1, 2],
  [3, 4],
  [5, 6],
];

const getDistancesFromOrigin = points.map(([x, y]) => Math.sqrt(x   x + y   y));
console.log(getDistancesFromOrigin); // 输出:[2.23606797749979, 5, 7.810249675906654]

 


8. 箭头函数和 this :

由于箭头函数在其词法作用域内捕获 this 值,因此在某些情况下可能导致问题。例如,在对象方法中使用箭头函数时,它不会获取到对象的 this ,而是捕获到外部作用域的 this 。为了解决这个问题,需要使用传统的 function 声明或表达式。

const obj = {
  value: 10,
  getValue: function() {
    // 正常的function表达式, this  指向obj
    return this.value;
  },
  getValueWithArrow: () => {
    // 箭头函数, this  指向外部作用域(在这种情况下是全局对象或undefined)
    return this.value;
  },
};

console.log(obj.getValue()); // 输出:10
console.log(obj.getValueWithArrow()); // 输出:undefined(严格模式)或全局对象的value属性

 


9. 箭头函数作为高阶函数的参数:

在处理高阶函数时,箭头函数非常有用,因为它们可以使代码更简洁。高阶函数是接受一个或多个函数作为参数、返回一个函数的函数。这里有一个使用箭头函数的高阶函数示例:

const add = a => b => a + b;

const add5 = add(5);
console.log(add5(3)); // 输出:8

在上面的示例中, add 函数接受一个参数 a 并返回一个新的函数,该函数接受另一个参数 b 并返回 a + b 的结果。



10. 不要在所有场景中都使用箭头函数:

尽管箭头函数有很多优点,但并非所有场景都适用。以下是一些避免使用箭头函数的情况:

- 在需要动态上下文的函数(如事件处理程序)中,箭头函数继承了它们的词法作用域。在这种情况下,可能需要使用 function 声明或表达式,以便根据需要访问当前上下文。
- 当需要使用 arguments 对象时,箭头函数不会创建它。在这种情况下,需要使用传统的 function 声明或表达式。



总之,箭头函数的简洁语法和特性使得它们在许多情况下都非常有用,还可以用在setTimeout、错误处理、Promise中等等。但是,在遇到 this 、 arguments 或其他相关问题时,有时可能需要使用传统的 function 声明或表达式来解决特定问题。

 

到了这里,关于JS中的箭头函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JavaScript解析】ES6定义变量与箭头函数详解

    箭头函数可以说是ES6的一大亮点,使用箭头函数,可以简化编码过程,使代码更加的简洁 本文由千锋前端老师独家创作,主要给大家介绍了关于ES6中箭头函数的相关资料,文中通过实例代码介绍的非常详细,觉得有帮助的话可以【关注】持续追更~ 我们现在知道定义(声明)一个变

    2024年02月05日
    浏览(47)
  • JS 箭头函数 =>

    箭头函数是一种声明函数的 简洁 语法,它与普通函数并无本质的区别, 差异性更多体现在语法格式上。 目的 : 引入箭头函数的目的是更简短的函数写法并且不绑定this,箭头函数的语法比函数表达式更简洁 使用场景 : 箭头函数更适用于那些 本来需要匿名函数的地方 箭头函

    2024年01月18日
    浏览(44)
  • JS高级 -- 作用域&解构&箭头函数

    作用域(scope)规定了变量能够被访问的“范围”离开了这个“范围”变量便不能被访问 作用域分为:局部作用域、全局作用域 1.1 局部作用域 局部作用域分为函数作用域和块作用域。 函数作用域: 在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。 总结: 函数

    2023年04月27日
    浏览(42)
  • JavaScript中的时间日期函数new Date()(JS中5种获取时间戳的函数)

    简介: JavaScript 中的 new Date() 方法用于创建一个新的 Date 对象,该对象表示当前日期和时间。Date 对象提供了许多方法和属性,可以用于获取和设置日期和时间信息。 new Date([year, month, day, hour, minute, second, millisecond]) 其中,每个参数都是可选的。如果没有指定参数,则 new Dat

    2024年02月04日
    浏览(73)
  • vue及js中使用function及箭头函数定义方法

    目录 1.函数声明,使用function 2.函数表达式,使用function 3.使用箭头函数方式 4.函数构造器 5.总结 1.函数声明,使用function 2.函数表达式,使用function 3.使用箭头函数方式 4.函数构造器 5.总结 在vue中,我们通过v-on指定来绑定要指定的方法,可以使用function或const箭头函数的方式

    2024年02月05日
    浏览(49)
  • 【学姐面试宝典】前端基础篇Ⅴ——JS深浅拷贝、箭头函数、事件监听等

    前言 博主主页👉🏻蜡笔雏田学代码 专栏链接👉🏻【前端面试专栏】 今天继续学习前端面试题相关的知识! 感兴趣的小伙伴一起来看看吧~🤞 addEventListener()方法,用于向指定元素添加事件句柄,它可以更简单的控制事件。语 法为: 第一个参数是 事件的类型 (如 “click”

    2024年01月19日
    浏览(44)
  • ES6中的箭头函数(arrow function)与普通函数的不同之处

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月10日
    浏览(38)
  • javascript常见100问|前端基础知识|问ajax-fetch-axios-区别请用 XMLHttpRequestfetch 实现 ajax节流和防抖px em rem vw/箭头函数的缺点

    HTML CSS JS HTTP 等基础知识是前端面试的第一步,基础知识不过关将直接被拒。本章将通过多个面试题,讲解前端常考的基础知识面试题,同时复习一些重要的知识点。 扎实的前端基础知识,是作为前端工程师的根本。基础知识能保证最基本的使用,即招聘进来能干活,能产出

    2024年04月27日
    浏览(51)
  • 一种简化操作日志记录方案

    后台系统配置越来越多的出现需要进行日志记录的功能,且当前已有日志记录不可复用,需要统一日志记录格式,提高日志记录开发效率。 新建动作: 修改动作: 删除动作: 注:可以选择其他存储方式,这里只简单举个例子 日志构建关注两个对象,一个是修改前,修改后

    2024年02月05日
    浏览(45)
  • [log_softmax]——深度学习中的一种激活函数

    [log_softmax]——深度学习中的一种激活函数 随着人工智能技术的发展,深度学习已经成为了众多领域的热点研究方向。在深度学习中,激活函数是非常重要的组成部分之一,而[log_softmax]就是其中的一种。本文将介绍什么是[log_softmax],以及它在深度学习中的应用。 首先,我们

    2024年02月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包