JavaScript中的普通函数和箭头函数的区别和用法详解

yizhihongxing

介绍JavaScript中的普通函数和箭头函数的区别和用法,可以从以下几个方面进行详细的讲解:

普通函数和箭头函数的区别

语法结构

普通函数:

function add(a, b) {
  return a + b;
}

箭头函数:

const add = (a, b) => {
  return a + b;
}

this指向

普通函数的this指向调用它的对象,如果没有对象就指向全局对象window。

箭头函数中的this指向继承自外层普通函数最近一层的this,如果不存在外层普通函数,就指向全局对象window。

适用场景

普通函数适用于需要在函数内部改变this指向的场景,比如面向对象编程。

箭头函数适用于函数内部不需要改变this指向的场景,比如在数组的map、filter、reduce等方法中的回调函数。

箭头函数的用法

箭头函数的简洁语法

如果箭头函数只有一个参数和一条表达式时,可以省略参数括号和大括号。

例如下面两个函数是等价的:

const double = (x) => { return x * 2; }
const double = x => x * 2;

箭头函数作为回调函数

箭头函数作为回调函数,可以简化代码:

const arr = [1, 2, 3];
const doubleArr = arr.map(x => x * 2);
console.log(doubleArr);

箭头函数作为对象方法

箭头函数作为对象方法,不能绑定this,会继承外层普通函数的this。

const person = {
  name: 'Tom',
  sayHi: () => {
    console.log(`Hi, my name is ${this.name}`);
  }
}
person.sayHi(); // 输出 Hi, my name is undefined

示例说明

示例1:普通函数和箭头函数的语法和this指向

const obj = {
  name: 'Tom',
  normalFunc: function() {
    console.log(`this指向:${this}`);
  },
  arrowFunc: () => {
    console.log(`this指向:${this}`);
  }
};

obj.normalFunc();  // this指向:[object Object]
obj.arrowFunc();   // this指向:[object Window]

该示例中定义一个对象,包含了一个普通函数和一个箭头函数。在两个函数中分别调用console.log打印this指向。在normalFunc函数中,this指向的是调用它的对象obj;而在arrowFunc中,由于它没有属于自己的this,所以指向的是全局作用域下的this,即window对象。

示例2:箭头函数作为回调函数

const arr = [1, 2, 3];
const doubleArr = arr.map(x => x * 2);
console.log(doubleArr);  // 输出 [2, 4, 6]

该示例中使用数组的map方法和箭头函数,将数组中的每个元素乘以2,得到一个新的数组doubleArr。相比于使用普通函数,箭头函数的代码更加简洁。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中的普通函数和箭头函数的区别和用法详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JS获取子、父、兄节点方法小结

    JS获取子、父、兄节点方法小结 在JavaScript中,我们经常需要获取某个元素的子元素、父元素或者兄弟元素来执行一些特定的操作。下面我们来总结一下JS获取子、父、兄节点的常用方法。 一、获取子节点 使用childNodes属性可以获取当前元素的所有子节点,包括文本节点、注释节点等。但是这个属性返回的是一个NodeList对象,如果想要获取指定位置的子元素…

    JavaScript 2023年6月10日
    00
  • 如何实现正则表达式的JavaScript的代码高亮

    要在网页中实现正则表达式的JavaScript代码高亮,可以采用Prism.js这个JavaScript库。 下面是实现的具体步骤: 1. 引入Prism.js 在网页的标签内添加下面的代码来引入Prism.js库: <link rel="stylesheet" href="https://cdnjs.cloudflare…

    JavaScript 2023年6月10日
    00
  • javascript数组中的concat方法和splice方法

    当我们在使用JavaScript时,经常需要对数组进行操作。其中,涉及到的操作方法很多,其中concat()和splice()方法是非常常用的两个方法。本文将详细介绍这两个方法的作用及其用法。 一、concat方法 concat方法可以连接两个或多个数组,返回一个新的数组。并不会修改现有的数组,而是创建一个新的数组,其中包含原来的数组的元素。具体用法如下: …

    JavaScript 2023年5月27日
    00
  • 一个查看session内容的函数

    来介绍一下如何编写一个查看 session 内容的函数。 1. 编写函数头部和注释 我们首先需要定义函数的名称和参数,以及函数的用途、功能等相关注释信息。示例代码如下: def show_session(session): """ 显示 session 内容的函数 :param session: Flask 中的 session…

    JavaScript 2023年6月11日
    00
  • javascript表单验证 – Parsley.js使用和配置

    JavaScript表单验证是Web开发过程中一个非常重要的环节,可以用于确保用户在提交表单时输入的数据格式正确且符合预期,从而提高应用程序的稳定性和可用性。 Parsley.js是一个轻量级的JavaScript表单验证库,可以有效地帮助开发人员构建和配置表单验证规则。下面是一份Parsley.js的配置攻略: 步骤1:安装Parsley.js 首先,需要…

    JavaScript 2023年6月10日
    00
  • JS实现把一个页面层数据传递到另一个页面的两种方式

    JS 实现把一个页面层数据传递到另一个页面主要有两种方式:URL参数传递和 localStorage 本地存储。 URL 参数传递 URL 参数传递是将要传递的数据拼接在 URL 中,通过 URL 传递给另一个页面。这种方式简单,易于实现,适用于传递少量数据。下面提供一个使用 URL 参数传递的示例: 发送页面: const name = "Ali…

    JavaScript 2023年6月11日
    00
  • ES6数组的扩展详解

    ES6数组的扩展详解 在ES6中,数组的概念得到了进一步扩展和完善,提供了一些新的方法和语法糖,使得开发人员在对数组进行操作时具有更多的便利性。 扩展运算符 在ES6中,一个新的运算符…被引入,称为扩展运算符(spread operator)。扩展运算符可以将数组展开为一系列的参数,方便我们对多个参数进行操作。 示例1:合并数组 const arr1 =…

    JavaScript 2023年5月27日
    00
  • 浅谈js内置对象Math的属性和方法(推荐)

    下面我来详细讲解“浅谈js内置对象Math的属性和方法(推荐)”的完整攻略。 1. Math对象的属性 Math对象是JS的内置对象之一,它包含了常用的数学属性和方法。Math对象有很多的属性,这里我们介绍几个常见的属性。 Math.E:表示自然对数的底数,即e,大约等于2.718281828459045。 Math.PI:数学常数,表示圆周率π,大约等于3…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部