首页 > 其他分享 >es6 类中的箭头函数和普通函数

es6 类中的箭头函数和普通函数

时间:2023-12-04 18:25:46浏览次数:35  
标签:es6 函数 箭头 关键字 普通 使用 类中 name

在ES6(ECMAScript 2015)中,引入了箭头函数(Arrow Functions)这一新特性。箭头函数与普通函数相比,主要有以下区别:

  1. 语法:

    • 普通函数使用function关键字进行定义,例如:function myFunction() { /* code */ }
    • 箭头函数则使用箭头语法进行定义,例如:(() => { /* code */ })(param1, param2) => { /* code */ }
  2. 绑定上下文(this):

    • 普通函数在执行时创建自己的this上下文。这意味着在函数内部,this关键字的值取决于函数是如何被调用的。
    • 箭头函数不创建自己的this上下文,它的this值直接来自于包含它的代码块。也就是说,箭头函数内部的this值是词法绑定的,而不是动态绑定的。
  3. arguments对象:

    • 普通函数可以使用特殊的arguments对象访问其参数列表,即使在参数数量不确定的情况下也能工作。
    • 箭头函数不提供自己的arguments对象。如果需要访问函数的参数,可以使用形参(parameter)。
  4. 生成器:

    • 普通函数可以声明为生成器(generator),使用function*语法。
    • 箭头函数不是生成器。
  5. new关键字:

    • 普通函数可以使用new关键字来创建新的对象实例。
    • 箭头函数不能使用new关键字。如果需要创建对象实例,可以使用其他方式(如使用工厂函数或构造函数)。
  6. 可读性:

    • 在某些情况下,箭头函数的简洁语法可以提高代码的可读性。特别是当函数的主体非常简单时,使用箭头函数可以减少不必要的代码。
  7. 严格模式:

    • 在严格模式下,普通函数和箭头函数的行为没有区别。但在非严格模式下,箭头函数有一些与普通函数不同的行为,例如在非严格模式下,箭头函数不会抛出TypeError异常,也不会报告语法错误。
    • 在ES6中,箭头函数是一种新的函数语法,它使用箭头符号(=>)来定义函数体和参数。箭头函数具有一些与普通函数不同的特性:

      1. 没有自己的this上下文,而是从包含它的代码块中继承this值。这意味着在箭头函数内部,this关键字的值与普通函数内部的this值不同。
      2. 不支持arguments对象,只能通过形参来传递参数。
      3. 不支持new关键字,不能用于创建对象实例。
      4. 可以省略函数名称,如果函数体只有一条语句,并且这条语句返回一个值,可以省略函数名称,并使用箭头符号代替。

      下面是一个使用箭头函数的例子:

      javascript复制代码
        // 普通函数
        function greet(name) {
        console.log(`Hello, ${name}!`);
        }
         
        // 箭头函数
        const greet = name => console.log(`Hello, ${name}!`);

      在上面的例子中,普通函数和箭头函数的实现方式基本相同,但箭头函数更加简洁。需要注意的是,箭头函数在某些情况下可能会改变包含它的代码块中的this值,这是普通函数所不具备的特性。

标签:es6,函数,箭头,关键字,普通,使用,类中,name
From: https://www.cnblogs.com/sexintercourse/p/17875610.html

相关文章

  • 无涯教程-Erlang - log函数
    该方法返回指定值的对数。log-语法log(X)X - 为对数函数指定一个值。log-返回值返回值是表示对数值的浮点值。-module(helloLearnfk).-import(math,[log/1]).-export([start/0]).start()->Alog=log(3.14),io:fwrite("~p~n",[Alog]).当我们运行上......
  • C语言常用函数
    C语言常用函数1.交换两个变量的值基本思路:使用临时变量来交换两个变量的值#include<stdio.h>intmain(){ inta=5; intb=10; inttemp; printf("Beforeswapping:a=%d,b=%d\n",a,b); temp=a; a=b; b=temp; printf("Afterswapping:a=%d,b=......
  • 双曲函数
    双曲正弦双曲余弦双曲正切表达式\(\sinhx=\frac{e^{x}-e^{-x}}{2}\)\(\coshx=\frac{e^{x}+e^{-x}}{2}\)\(\tanhx=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}\)对称性奇函数偶函数奇函数值域\(\mathbb{R}\)\([1,+\infty)\)\((-1,1)\)单调性严格增在\([......
  • 四. 多态性和虚函数
    文章参考:《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客1.多态性概述所谓多态性,就是不同对象接收不同消息时,产生不同的动作。这样就可以用相同的接口访问不同的函数,从而实现一个接口,多种方法。从实现方式上看,多态性分为两种:编译时多态:在C++......
  • 六. 函数模板和类模板
    文章参考:《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客1.引入在编写函数和类时,有时会出现这样的情况,具体实现方式完全一致,但因此参数类型、返回值类型、数据类型等因素的不同,导致不得不写多个函数或者类(因为C++是强类型语言,无法隐式转换,且有些......
  • C++ 内联函数 inline
    宏定义实现和普通函数实现:-宏定义是直接在实现的时候进行代码替换,可能产生结果异常问题。-普通函数实现:调用函数进出函数体的时候时间开销可能过大。1#include<iostream>2usingnamespacestd;3//宏实现4#defineGETMAX(a,b)((a)>(b)?(a):(b))......
  • Java 函数式接口
    在Java中,函数式接口(functionalinterface)是指仅包含一个抽象方法的接口。这种类型的接口通常用于表示简单的函数签名,并可与lambda表达式或方法引用结合使用,从而提供一种更简洁、更灵活的编程方式。Java8引入了函数式接口的概念,以及一个新的注解@FunctionalInterface。这个注解......
  • vue3 setup 父组件向子组件传递参数、方法|子组件向父组件传递数据,函数
    https://blog.csdn.net/qq_27517377/article/details/123163381https://blog.csdn.net/qq_27517377/article/details/123166367vue3setup父组件向子组件传递参数参数<template><el-rowclass="mb-4"> <el-buttontype="danger">props.vue传......
  • 无涯教程-Erlang - atan函数
    该方法返回指定值的反正切。atan-语法atan(X)X - 为反正切函数指定一个值。atan-返回值返回值是一个浮点值,表示反正切值。-module(helloLearnfk).-import(math,[atan/1]).-export([start/0]).start()->Atan=atan(0.7071),io:fwrite("~p~n",[Atan]......
  • Python函数介绍
    1.函数1.1函数概述函数定义和优势不同形状正方形打印#2个foriinrange(0,2):forjinrange(0,2):print("*",end="")print()#3个foriinrange(0,3):forjinrange(0,3):print("*",end="")pr......