Javascript/ES6箭头函数


文章目录

  • Javascript/ES6箭头函数
  • 一、箭头函数是什么?
  • 二、箭头函数与普通函数的区别
  • 三、箭头函数的使用
    • 1.箭头函数是匿名函数,不能作为构造函数,不能使用new
    • 2.箭头函数不能使用arguments、super
    • 3.箭头函数中this 指向
  • 四、总结

一、箭头函数是什么?

ES6 引入了一种新的语法来编写函数,它就是箭头函数,绝大数,箭头函数与函数表达式创建的函数对象行为是相同的。任何可以使用函数表达式的地方,也可以使用箭头函数。箭头函数是一种函数简写方式, 定义形式是:参数(…)后面跟着箭头 =>,然后是函数内容体。


二、箭头函数与普通函数的区别

箭头函数是“=>”,普通函数是“function”。箭头函数不能作为构造函数,不能使用new。箭头函数不绑定arguments,但普通函数可以。箭头函数中的this代表上层对象,普通函数中的this代表当前对象。

  1. 箭头函数比普通函数更加简洁
    如果没有参数,就直接写一个空括号即可。
    如果只有一个参数,可以省去参数的括号。
    如果有多个参数,用逗号分割。
    如果函数体的返回值只有一句,可以省略大括号。
  2. 箭头函数没有自己的this
    箭头函数不会创建自己的this, 所以它没有自己的this,它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了,之后不会改变。
  3. 箭头函数继承来的this指向永远不会改变

普通函数

// 普通函数
let PI = function() {return 3.14;
};

箭头函数

// 箭头函数
let PI = () => {return 3.14
}

三、箭头函数的使用

箭头函数有两种格式:

一种只包含一个表达式,没有{...}return

let PI = x => {return 10 * x}    //多个参数时需要括号,例如(x, y,z)

一种包含多条语句, 这个时候 {...} ,return 就不能省略

     //箭头函数var PI = () => 5;//等价于//普通函数var PI = function () {return 5;};//箭头函数var PI = (num1, num2) => num1 + num2;//等价于//普通函数var PI = function (num1, num2) {return num1 + num2;}

提示: 1.函数体内只包含一个表达式 { … }和return可以省略掉。函数体内包含多条表达式 { ...}和return不能省略掉。 2.如果要返回一个对象,如果是单表达式,会报错:x => { foo: x }。因为和函数体的{ ...}有语法冲突,要改为:x => ({ foo: x })

1.箭头函数是匿名函数,不能作为构造函数,不能使用new

代码如下(示例):

let PI = () => {console.log('3.14');
}let fc = new PI();

2.箭头函数不能使用arguments、super

代码如下(示例):

// 普通函数
let PI = function() {return arguments.length;
}
PI(1, 2, 3); // 3// 箭头函数
let PI = () => {return arguments.length;
}PI(1, 2,3); // Uncaught ReferenceError: arguments is not defined

3.箭头函数中this 指向

代码如下(示例):

let PI = 3.14;
const obj_1 = {PI: 10,fun_1: function() {let PI = 20;const obj_2 = {PI: 30,fun_2: () => {console.log(this.PI);}}obj_2.fun_2();}
}
obj_1.fun_1(); // 返回10

fun_2返回的结果为:10

原因是箭头函数没有this,箭头函数的this指向是父级的this指向。如果没有父级或者父级没有指向,箭头函数的this指向是window ,这里箭头函数的执行上下文是函数fun_1(),所以它就继承了fun_1()的this,obj_1调用的fun_1,所以fun_1的this指向obj_1, 所以obj_1.PI 为 10。


四、总结

  1. 要有个箭头
  2. 箭头的前面是小括号,放形参,只有一个形参的时候可以省略小括号;
  3. 箭头的后面是函数体;
  4. 如果函数体只有一个语句,没有{},此时的返回值不需要return;
  5. 箭头函数里面的this总是指向最靠近的function 内部的this;
  6. 对象里面的方法,尽可能不要使用箭头函数;
  7. 箭头函数里面没有arguments,可以使用…reset,接收过来就是数组类型,接收的是形参之外的所有的实参;

Javascript/ES6箭头函数相关推荐

  1. JavaScript ES6箭头函数指南

    前言 胖箭头函数(Fat arrow functions),又称箭头函数,是一个来自ECMAScript 2015(又称ES6)的全新特性.有传闻说,箭头函数的语法=>,是受到了CoffeeSc ...

  2. javascript es6 箭头函数 简介

    基本用法 ES6 允许使用"箭头"(=>)定义函数. var f = v => v; 上面的箭头函数等同于: var f = function (v) {return ...

  3. 学习笔记 JavaScript ES6 箭头函数

    学习内容: this指向定义时所在的对象,而不是调用时所在的对象 不可以当作构造函数 不可以使用arguments对象 1.this指向定义时所在的对象,而不是调用时所在的对象 先来回顾一下ES5当中 ...

  4. es6 箭头函数使用_如何使用ES6箭头功能使JavaScript易于阅读

    es6 箭头函数使用 Arrow functions are the new fundamental building blocks of building modern web applicatio ...

  5. [OHIF-Viewers]医疗数字阅片-医学影像-ES6箭头函数(=)

    [OHIF-Viewers]医疗数字阅片-医学影像-ES6箭头函数(=>) https://www.liaoxuefeng.com/wiki/1022910821149312/103154957 ...

  6. javascript的箭头函数

    javascript的箭头函数 箭头函数的定义 箭头函数(Arrow Function):ES6标准中新增的函数,叫箭头函数的原因是因为它使用了 ' => ' 来进行标识 箭头函数的基础语法 通 ...

  7. ES6箭头函数中的this指向

    1箭头函数中的this (1)箭头函数中没有this : 这意味着 call() apply() bind() 无法修改箭头函数中的this (2)箭头函数中的this指向 :访问上一个作用域的thi ...

  8. es6 箭头函数 rest参数 扩展运算符

    Es6 箭头函数 语法: 普通函数: fn=function(){} 箭头函数: fn=()=>{} 特性: this是静态的,this始终指向函数声明时所在作用域下的this的值(使用call ...

  9. es6箭头函数_【知识点】ES6箭头函数、箭头函数与普通函数的区别

    作者:長安曹公子 文章出处:ES6 - 箭头函数.箭头函数与普通函数的区别 一.基本语法 ES6中允许使用箭头=>来定义箭头函数,具体语法,我们来看一个简单的例子: // 箭头函数 let fu ...

最新文章

  1. 华为鸿蒙系统概念图,华为P50Pro概念图:没有麒麟芯片,鸿蒙系统和7镜头也可以很豪横...
  2. 深入浅出Rust Future - Part 1
  3. python发送给邮件 转
  4. 一些http 响应码及含义
  5. scala学习 之 环境搭建(一)
  6. 如何实现一个符合泊松分布的即时消息发生器?
  7. 云小课 | 详解华为云独享型负载均衡如何计费
  8. 华为交换机命令_华为交换机故障诊断命令display怎么用?
  9. vs2005部署报表服务器项目老提示输入用户名密码解决办法
  10. java2017下载_Download Java for OS X 2017-001
  11. 部门WIFI配置-防火墙-核心交换机和POE交换机
  12. linux服务之irqbalance
  13. dubbo服务调用为何先进入到mockClusterInvoker执行
  14. ubuntu 外置硬盘安装
  15. Vim激荡30年发展史
  16. python有道批量单词音标整理-Python 批量翻译 使用有道api;
  17. 我的孤独自学之路----kali 安装及更新源
  18. CentOS7 系统盘扩容
  19. R语言一般线性模型(涉及因变量是虚拟变量(哑变量))
  20. Ubuntu 16.04.3 LTS操作系统安全加固

热门文章

  1. 游戏资源差异化热更新及加密全攻略(Assetbundle 打包 AssetBundle 加载 AssetBundle 加密)
  2. requestPermissions读写手机存储权限_315保护隐私!手机这几个设置保护个人隐私
  3. 润乾报表实现竖排文字
  4. 苹果怎么换字体_oppo换苹果手机怎么把便签里的东西移过去?
  5. tableau显示正在将数据发送到服务器,BI软件之Tableau学习心得之三——常见问题总结...
  6. 清除三星SCX4200硒鼓上的计数器
  7. 联想k920 android7,联想K920和小米4哪个好
  8. 2016words---论文标题多级目录和图片清单
  9. [转载]Word通配字符
  10. vue中v-for 与 v-if 使用错误