文章目录

  • 箭头函数语法
    • 示例 1:无参数的箭头函数
    • 示例 2:带一个参数的箭头函数
    • 示例 3:作为表达式的箭头函数
    • 示例 4:多行箭头函数
  • this 与箭头函数
    • 在常规函数中
    • 在箭头函数中
  • 参数绑定
  • 带有 Promise 和回调的箭头函数
  • 使用箭头函数应该避免的事情
  • 参考文档

    在本教程中,您将借助示例了解 JavaScript 箭头函数。
    箭头函数是 ES6 版本 JavaScript 中引入的特性之一。与常规函数相比,它允许您以更简洁的方式创建函数。例如,
    这个函数:

// function expression
let x = function(x, y) {return x * y;
}

    可以写成:

// using arrow functions
let x = (x, y) => x * y;

    使用箭头函数。

箭头函数语法

    箭头函数的语法是:

let myFunction = (arg1, arg2, ...argN) => {statement(s)
}

    这里,

  • myFunction 是函数的名称
  • arg1, arg2, …argN 是函数参数
  • statement(s) 是函数体

    如果主体有单个语句或表达式,您可以将箭头函数编写为:

let myFunction = (arg1, arg2, ...argN) => expression
示例 1:无参数的箭头函数

    如果一个函数不带任何参数,那么你应该使用空括号。例如,

let greet = () => console.log('Hello');
greet(); // Hello
示例 2:带一个参数的箭头函数

    如果函数只有一个参数,则可以省略括号。例如,

let greet = x => console.log(x);
greet('Hello'); // Hello
示例 3:作为表达式的箭头函数

    您还可以动态创建函数并将其用作表达式。例如,

let age = 5;let welcome = (age < 18) ?() => console.log('Baby') :() => console.log('Adult');welcome(); // Baby
示例 4:多行箭头函数

    如果函数体有多条语句,则需要将它们放在花括号 { } 中。例如,

let sum = (a, b) => {let result = a + b;return result;
}let result1 = sum(5,7);
console.log(result1); // 12

this 与箭头函数

    在常规函数中,this 关键字指的是调用它的函数。
    但是,this 与箭头函数无关。箭头函数没有自己的 this。因此,无论何时调用 this,它都指的是其父范围。例如,

在常规函数中
function Person() {this.name = 'Jack',this.age = 25,this.sayName = function () {// this is accessibleconsole.log(this.age);function innerFunc() {// this refers to the global objectconsole.log(this.age);console.log(this);}innerFunc();}
}let x = new Person();
x.sayName();

    输出

25
undefined
Window {}

    在这里,this.sayName() 内的 this.age 是可访问的,因为 this.sayName() 是对象的方法。
    然而,innerFunc() 是一个普通函数,this.age 是不可访问的,因为 this 指的是全局对象(浏览器中的窗口对象)。因此,innerFunc() 函数内部的 this.age 给出 undefined。

在箭头函数中
function Person() {this.name = 'Jack',this.age = 25,this.sayName = function () {console.log(this.age);let innerFunc = () => {console.log(this.age);}innerFunc();}
}const x = new Person();
x.sayName();

    输出

25
25

    这里,innerFunc() 函数是使用箭头函数定义的。在箭头函数中,this 指父函数的作用域。因此,this.age 给出 25。

参数绑定

    常规函数具有参数绑定。这就是为什么当您将参数传递给常规函数时,您可以使用 arguments 关键字访问它们。例如,

let x = function () {console.log(arguments);
}
x(4,6,7); // Arguments [4, 6, 7]

    箭头函数没有参数绑定。
    当您尝试使用箭头函数访问参数时,它会给出错误。例如,

let x = () => {console.log(arguments);
}x(4,6,7);
// ReferenceError: Can't find variable: arguments

    要解决这个问题,可以使用扩展语法。例如,

let x = (...n) => {console.log(n);
}x(4,6,7); // [4, 6, 7]

带有 Promise 和回调的箭头函数

    箭头函数提供了更好的语法来编写 Promise 和回调。例如,

// ES5
asyncFunction().then(function() {return asyncFunction1();
}).then(function() {return asyncFunction2();
}).then(function() {finish;
});

    可以写成

// ES6
asyncFunction()
.then(() => asyncFunction1())
.then(() => asyncFunction2())
.then(() => finish);

使用箭头函数应该避免的事情

  1. 你不应该使用箭头函数在对象内部创建方法。
let person = {name: 'Jack',age: 25,sayName: () => {// this refers to the global .....//console.log(this.age);}
}person.sayName(); // undefined
  1. 不能使用箭头函数作为构造函数。例如,
let Foo = () => {};
let foo = new Foo(); // TypeError: Foo is not a constructor

    注意:箭头函数是在 ES6 中引入的。某些浏览器可能不支持使用箭头功能。访问JavaScript 箭头函数支持以了解更多信息。

    上一教程 :JS ES6                                          下一教程 :JS Default Parameters

参考文档

[1] Parewa Labs Pvt. Ltd. (2022, January 1). Getting Started With JavaScript, from Parewa Labs Pvt. Ltd: https://www.programiz.com/javascript/arrow-function

JavaScript 箭头函数相关推荐

  1. JavaScript箭头函数

    JavaScript箭头函数 箭头函数(arrow functions),是一个来自ECMAScript 2015(又称ES6)的全新特性.箭头函数有时候也叫"lambda表达式" ...

  2. JavaScript箭头函数中的this

    JavaScript箭头函数中的this详解 箭头函数极大地简化了this的取值规则. 普通函数与箭头函数 普通函数指的是用function定义的函数: var hello = function () ...

  3. JavaScript箭头函数(Arrow Function)

    2019独角兽企业重金招聘Python工程师标准>>> ES6标准新增了一种新的函数:Arrow Function(箭头函数). 更简洁的语法 我们先来按常规语法定义函数: func ...

  4. javascript箭头函数和this的指向问题

    箭头函数 下面两代码等价: const fun1 = function(x){return x*x;}const fun = x => x*x; function换成=>,放在参数和函数体 ...

  5. 深入理解JavaScript箭头函数

    箭头函数就是个简写形式的函数表达式,并且它拥有词法作用域的this值(即不会新产生自己作用域下的this,arguments,super和new.target等对象).此外,箭头函数总是匿名的. 语法 ...

  6. JavaScript—箭头函数

    箭头函数表达式的语法比函数表达式短,并且不绑定自己的 this,arguments,super或 new.target.此外,箭头函数总是匿名的.这些函数表达式最适合非方法函数,它们不能用作构造函数. ...

  7. JavaScript箭头函数(Lambda表达式)

    箭头函数也叫lambda表达式 据说其主要意图是定义轻量级的内联回调函数 栗有: 1 var arr = ["wei","ze","yang" ...

  8. JavaScript 学习-8.JavaScript 箭头函数的使用

    前言 ES6 中引入了箭头函数() =>.箭头函数不需要使用function关键字,允许我们编写更短的函数. 箭头函数 之前使用function 定义函数 fun1 = function() { ...

  9. JavaScript箭头函数的使用和this指向

    01-箭头函数的基本使用 普通定义函数的方式:function const aaa = function() {} // es6箭头函数 const aaa = () => {} 对象字面量定义 ...

最新文章

  1. php对称算法_php里简单的对称加密算法
  2. VTK:可视化之CreateColorSeries
  3. Leet Code OJ 2. Add Two Numbers [Difficulty: Medium]
  4. 阿里开发规范文档_华为阿里等技术专家15年开发经验总结:SSM整合开发实战文档...
  5. 最新的20多个JMS面试问答(2020)
  6. Ant Design Pro 开启默认进入登录页
  7. WPF仿制IOS UI(未完待续)
  8. MySQL 5.7 主从复制配置
  9. Antd 多层Modal+Form组件嵌套 如何在父级组件中清空子级组件状态与数据?
  10. 吉隆坡强制所有餐馆明年必须设有无线上网服务
  11. window10进入“服务”的三种方式
  12. 图像通道变换python-opencv
  13. 2022美国大学生数学建模竞赛D题思路
  14. 你真应该再多了解些Handler机制
  15. 基于stm32/单片机/DSP/Java的毕业设计 课程设计
  16. 点在多边形内算法,JS判断一个点是否在一个复杂多边形的内部
  17. 2.资料下载:C语言学习
  18. WinDBG 技巧:列出模块(DLL/EXE)里面所有的符号(symbol)
  19. catia利用宏批量改名的方法_CATIA宏:批量将零件转为设计模式插件,轻轻松松使用高速缓存...
  20. java drawstring 模糊_Java绘制文字质量太低的解决方案?

热门文章

  1. HDU2196树形dp
  2. c# 使用word 标签 插入多图片 文字
  3. upnp协议简介(二)
  4. java arraydeque_Java ArrayDeque addLast()用法及代码示例
  5. 美食杰 菜谱详情(效果介绍)
  6. 美食杰项目 -- 菜谱大全(二)
  7. c# word 增加段落_Word排版费时又费力?用上这款插件,再冗杂的内容也能轻松排好...
  8. vue生命周期函数可以操作dom_vue生命周期钩子函数(详解及使用场景)
  9. 2022青海最新八大员之(安全员)模拟考试试题及答案
  10. Shell编程之循环语句(详细讲解以及脚本案例)