首页 > 其他分享 >箭头函数与普通函数的区别 ( 6 点 )

箭头函数与普通函数的区别 ( 6 点 )

时间:2024-04-06 20:04:34浏览次数:21  
标签:function const 函数 区别 作用域 示例 箭头

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。

在这里插入图片描述

No.内容链接
1Openlayers 【入门教程】 - 【源代码+示例300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3Cesium 【入门教程】 - 【源代码+图文示例200+】
4MapboxGL【入门教程】 - 【源代码+图文示例150+】
5前端就业宝典 【面试题+详细答案 1000+】

在这里插入图片描述

文章目录


在这里插入图片描述

箭头函数(Arrow Function)与传统的JavaScript普通函数(function declaration / function expression)之间存在一些关键的区别,下面将详细介绍并提供代码示例:

  1. 语法区别

    • 普通函数的声明形式:
      // 函数声明
      function add(a, b) {
        return a + b;
      }
      
      // 函数表达式
      const normalFunction = function(a, b) {
        return a + b;
      };
      
    • 箭头函数的声明形式更为简洁:
      // 箭头函数表达式
      const arrowAdd = (a, b) => a + b;
      
      // 当函数体只有一行且直接返回结果时,可以省略{}
      // 如果有多行语句或需要明确return,则需要加上{}
      const arrowMult = (a, b) => {
        const result = a * b;
        return result;
      };
      
  2. this 关键字的绑定

    • 普通函数在不同的调用上下文中有自己独立的 this 绑定,如作为对象的方法调用时,this 指向该对象;在全局作用域下调用时,在严格模式下 this 为 undefined,非严格模式下 this 为全局对象(浏览器环境中是 window)。
      const obj = {
        method: function() {
          console.log(this); // 输出:{method: ƒ}
        }
      };
      obj.method();
      
    • 箭头函数没有自己的 this,它会捕获其所在(即定义的位置)上下文的 this 值:
      const obj = {
        outerThis: 'global',
        method: () => {
          console.log(this); // 如果在全局作用域下定义,输出:全局对象
                            // 如果在其他函数内部定义,输出:该函数的作用域对象
        }
      };
      obj.method(); // 输出可能不是预期的obj,而是外层作用域的this
      
  3. arguments 对象

    • 普通函数可以访问 arguments 对象,它包含了函数调用时的所有参数,即使没有明确声明这些参数。
      function logArgs() {
        console.log(arguments);
      }
      logArgs(1, 2, 3); // 输出:[1, 2, 3]
      
    • 箭头函数没有 arguments 对象,但可以通过展开运算符 ... 来模拟类似行为:
      const logArgsArrow = (...args) => {
        console.log(args);
      };
      logArgsArrow(1, 2, 3); // 输出:[1, 2, 3]
      
  4. 不能作为构造函数

    • 箭头函数不能使用 new 关键字调用,因此不能用来创建对象实例。
      // 下面的代码会抛出错误,因为箭头函数不能当作构造函数
      const ArrowConstructor = () => {};
      new ArrowConstructor(); // TypeError: ArrowConstructor is not a constructor
      
    • 普通函数可以被用作构造函数:
      function Person(name) {
        this.name = name;
      }
      const person = new Person('Alice');
      console.log(person.name); // 输出:'Alice'
      
  5. 没有原型(prototype)属性

    • 普通函数有一个 prototype 属性,可用于实现基于原型的继承机制。
    • 箭头函数没有 prototype 属性,因此不能通过它创建可继承的对象。
  6. call(), apply()bind() 方法

    • 普通函数可以使用 call(), apply()bind() 方法更改 this 的指向。
    • 箭头函数由于其 this 是词法作用域决定的,所以这些方法对其无效,即无法通过它们改变 this 的指向。

综上所述,箭头函数在简化语法、处理 this 绑定以及面向对象编程方面有着与普通函数不同的特性,选择使用哪种函数取决于具体的应用场景和需求。

标签:function,const,函数,区别,作用域,示例,箭头
From: https://blog.csdn.net/cuclife/article/details/137263523

相关文章

  • JS 中的函数 this 指向总结
    这个js语言中的this和其他面向对象的语言有本质的不同,也更复杂,它更多取决于函数在不同场景下的调用方式,要理解它并总结出它的规律的话,优先要从上下文这个概念认知说起.理解上下文上下文context可理解为程序执行时的背景环境,包含了在特定时刻程序所需要的所有......
  • 函数及其表达方式
    函数及其表达方式哎,真是没想到上上周的数学课的总结会拖得那么久。表达方式:自变量&因变量在函数\(f(x)=x+1\)中,\(f(x)\)是因变量,\(x\)是自变量。定义域定义域的意思若有集合\(J\)使\(\forallx\inJ\),则称\(J\)是\(f(x)\)的定义域。求定义域的方法1.分式函数(分母不能......
  • C++11中auto与decltype的区别与联系深入解析
    文章目录一、引言二、auto关键字及其特性1、auto的基本定义与用途2、auto在类型推导中的应用3、auto的局限性及需要注意的问题三、decltype关键字及其特性1、decltype的基本定义与用途2、decltype在类型推导中的应用3、decltype的局限性及需要注意的问题四、auto与decl......
  • C++中拷贝构造函数调用时机——学习记录
    拷贝构造函数调用时机:C++中拷贝构造函数调用时机通常有三种情况使用一个已经创建完毕的对象来初始化一个新对象值传递的方式给函数参数传值以值方式返回局部对象问题描述在黑马C++课程上学习时发现,第三种情况:以值方式返回局部对象时会不会调用构造函数。对比后发现,黑......
  • c语言字符串函数(strlen strcpy strcat strcmp等使用及模拟)
    在编程的过程中,我们经常要处理字符和字符串,为了方便操作字符和字符串,C语⾔标准库中提供了一系列库函数,接下来我们就学习一下这些函数。目录1、strlen的使用及模拟实现。2、strcpy的使用及模拟实现。3、strcat的使用及模拟实现。4、strcmp的使用及模拟实现。5、strncpy的......
  • 【代码分享】基于最小二乘支持向量机(LSSVM)+自适应带宽核函数密度估计(ABKDE)的多变量回
    专题推荐:论文推荐,代码分享,视角(点击即可跳转)所有链接建议使用电脑端打开,手机端打开较慢 关注公X众X号:NewPowerSystem预测和优化理论分享新型电力系统预测和优化领域的理论研究成果,包括优秀论文、工程应用、仿真代码等文章阅读推荐和代ma获取链接:......
  • day11 基础函数(二)
    知识回顾```python#函数:封装具有某种功能的代码块函数的定义def函数名():  代码函数名()#函数调用实参:相当于变量值(演员)形参:相当于变量名(角色) 必须参数(位置参数)就是必须按照正确的顺序将实参传入到函数中,实参和形参个数必须一一对应 默认......
  • pandas中var() 函数的应用
    var()函数用于计算DataFrame或Series中数值型数据的方差。方差是衡量数据分散程度的一种统计量,它是各个数据与整个数据集平均值之差的平方的平均值。下面是一个示例,说明如何使用var()函数:importpandasaspd#创建一个DataFramedata={'A':[1,2,3,4,5......
  • pandas中isna() 函数的应用
    isna()函数用于检查DataFrame或Series中的每个元素是否为缺失值(NaN)。如果元素是缺失值,则返回True;否则返回False。下面是一个示例,说明如何使用isna()函数:importpandasaspdimportnumpyasnp#创建一个包含缺失值的DataFramedata={'A':[1,np.nan,3......
  • pandas中apply() 函数的应用
    apply()函数是Pandas中用于对DataFrame或Series中的数据进行自定义函数处理的函数。它可以将一个函数应用到DataFrame或Series的每一行或每一列,从而实现对数据的批量处理。对于Series和DataFrame,apply()函数的基本语法如下:Series.apply(func,axis=0,raw=Fal......