首页 > 编程语言 >【JavaScript20】箭头函数

【JavaScript20】箭头函数

时间:2023-08-07 21:45:40浏览次数:32  
标签:函数 绑定 JavaScript20 箭头 arguments var foo

  • 箭头函数没有自己的this,arguments,super或new.target。箭头函数适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。
  • 1、基本语法
//(param1, param2, ..., paramN) => { statements }

(param1, param2, ..., paramN) => expression
//相当于: (param1, param2, ..., paramN) => {return expression}
//当函数体内只有一句代码时,retrun 和 {}可以省略

//当只有一个参数时,圆括号也是可选的, 可省略
(singleParam) => {statements}
  singleParam => {statements}
//没有参数的函数应该写成一对圆括号
() => {statements}  //空的箭头函数返回undefined10 let empty = () => {};
  • 2、箭头函数不绑定this
    • 2.1:箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this。
function Person() {
    this.age = 0;

    setInterval(() => {
        this.age++;  // this 指向p 实例
    }, 1000);
}

var p = new Person();
  • 2.2:通过 call 或 apply 调用时,由于箭头函数没有自己的 this,通过 call() 或 apply() 方法调用一个函数时,只能传递参数(不能绑定this),它们的第一个参数会被忽略。
var adder = {
    base: 1,

    add: function(a) {
        var f = v => v + this.base;
        return f(a);
    },

    addThruCall: function(a) {
        var f = v => v + this.base;
        var b = {
            base: 2
        };
         return f.call(b, a);
    }
};

console.log(adder.add(1));  //2
console.log(adder.addThruCall(1))  // 2
  • 3、不绑定arguments
    • 箭头函数不绑定Arguments对象。不可以使用arguments对象,该对象在函数体内不存在。
function foo(n) {
   var f = () => arguments[0] + n; //隐式绑定 foo 函数的 arguments 对象。arguments[0] 是 n, 即传给foo函数的第一个参数
   return f();
}

foo(1); //2
foo(2); //4
foo(3); //6
foo(3,2); //6
  • 4、箭头函数不能用作构造函数,和new一起使用会抛出错误。
  • 5、箭头函数没有prototype属性
  • 6、箭头函数不能用作函数生成器,因为yield关键字通常不能再箭头函数中使用(除非是嵌套在允许使用的函数内)。
  • 7、箭头函数不适合用作对象的方法

标签:函数,绑定,JavaScript20,箭头,arguments,var,foo
From: https://www.cnblogs.com/xwltest/p/17610230.html

相关文章

  • 如何在浏览器扩展中使用 eval 函数
    思路是把iframe作为沙箱环境,让eval在iframe中执行。以ChromeManifestV2为例。V3可参考UsingevalinChromeextensions-ChromeDevelopers。1.在manifest文件中列出沙箱html{...,"sandbox":{"pages":["sandbox.html"]},...}2.加载......
  • 微信小程序13 在请求url获取返回值后修改data变量的一个问题,es6箭头函数或外部定义变
    在之前解密电话时,我们有请求wx的apiwx.request({url:'https://api.weixin.qq.com/sns/jscode2session',data:{},success:(re)=>{//console.log('re:'+JSON.stringify(re));this.......
  • go基础-函数
    概述在任何语言中函数都是极其重要的内容,业务功能都是由一个或多个函数组合完成。go语言是函数式编程语言,函数是一等公民,可以被传递、有函数类型,go语言有三种类型的函数,普通函数、匿名函数(Lambda函数)、方法函数。go语言函数有独特属性,可以有多个返回值,需要使用多个变量接收、函......
  • 支持多数据源联合查询的SQL运行引擎sycnany-SQL添加使用自定义函数
    在微服务和云原生愈发流行的今天,数据的分布也愈发脱离单库单机而更加复杂,使用的数据库类型也会更多,但业务的复杂依然会带来了大量的数据查询和导出需求,而很多时候我们很难为数据量的大部分系统创建完整的BI数仓系统,这时候你是不是觉得为这些需求查询和导出数据就会是一个十分困难且......
  • 编程范式 --- 函数式编程
    定义函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambdacalculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。--百度百科简单说,"函数式编程"是一种"编程范式"(programmingparadigm),也就是如何编写程序的方法论。它属于"结......
  • 无涯教程-Perl - endnetent函数
    描述此功能告诉系统您不再希望使用getnetent从网络列表中读取条目。语法以下是此函数的简单语法-endnetent返回值此函数不返回任何值。例以下是显示其基本用法的示例代码-#!/usr/bin/perluseSocket;while(($name,$aliases,$addrtype,$net)=getnetent())......
  • 无涯教程-Perl - endhostent函数
    描述此函数告诉系统您不再希望使用gethostent从hosts文件读取条目。语法以下是此函数的简单语法-endhostent返回值此函数不返回任何值。例以下是显示其基本用法的示例代码-#!/usr/bin/perlwhile(($name,$aliases,$addrtype,$length,@addrs)=gethostent()){......
  • 无涯教程-Perl - dump函数
    描述此函数将当前正在执行的Perl解释器和脚本转储到核心转储中。使用undump程序,然后可以将转储的内核重新构造为可执行程序。执行新的二进制文件时,将从执行gotoLABEL开始。如果省略了LABEL,则从顶部重新启动程序。如果要使用转储来提高程序速度,请考虑按照perlcc中的描述生......
  • ACCESS 说一说Round,VAL与NZ这三个函数在SQL中的应用
    Round是用来处理浮点计算的,如果不处理,原本一个29.9,它能给你算成29.899500000012345.如果字段属性是文本格式,你再怎么round都没用,所以在这之前,你得把文本类型的字段,转成数字类型的字段.方法也很简单,比如[字段]*1.但是这里又会产生一个新的问题,比如字段下面有null值或者......
  • Mitsubishi 三菱FXPLC实例(通用函数的实际应用)
    比较功能函数比较功能函数包括GT、GE、EQ、LE、LT、NE,它们都有两个输入IN,这些函数是进行输入值的比较运算后,将运算结果以BOOL型进行输出。我们以GT函数为例讲一下吧,GT函数就是进行多个输入的逐一比较。当全部s(n-1)>s(n)时,输出TRUE。只要有某个为s(n-1)≤s(n)时,输出FALS......