箭头函数表达式的语法比函数表达式更短,并且没有自己的this,arguments,super或 new.target。

箭头函数基本语法

(参数1, 参数2, …, 参数N) => { 函数声明 }
(参数1, 参数2, …, 参数N) => 表达式(单一)
//相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; } // 当只有一个参数时,圆括号是可选的:
(单一参数) => {函数声明}
单一参数 => {函数声明} // 没有参数的函数应该写成一对圆括号。
() => {函数声明}

写法对比

let fun1 = (a, b) => a + b    // 正确写法
let fun2 = (a, b) => { a + b } // 错误写法
let fun3 = (a, b) => { return a + b } // 正确写法 console.log(fun1(1,2), fun2(1,2), fun3(1,2)) // 3 undefined 3
  • 当箭头函数后面的函数声明部分只有一行时,可以不加大括号,并且默认return
  • 当箭头函数后面的函数声明部分加大括号时,必须添加return

注意


在ES6中,由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错。

let fun1 = id => { id: id, name: "jack" };

console.log(fun1(111)); // 报错
let fun2 = id => ({ id: id, name: "jim" });

console.log(fun2(222));    // 不报错,   {id: 222, name: "jim"}

let fun3 = id => {
return { id: id, name: "jack" };
} fun3(333); // 不报错, {id: 333, name: "jim"}

ES6 箭头函数易出错细节的更多相关文章

  1. 前端分享----JS异步编程+ES6箭头函数

    前端分享----JS异步编程+ES6箭头函数 ##概述Javascript语言的执行环境是"单线程"(single thread).所谓"单线程",就是指一次只 ...

  2. es6箭头函数讲解

    es6箭头函数的用法 箭头函数是es6的一种函数的简写方法. 如下: var f = v = > v; //等同于 var f = function(v){ return v; } var su ...

  3. es6箭头函数 this 指向问题

    es5中 this 的指向 var factory = function(){ this.a = 'a'; this.b = 'b'; this.c = { a:'a+', b:function(){ ...

  4. ES6 — 箭头函数

    一 为什么要有箭头函数 我们在日常开发中,可能会需要写类似下面的代码 const Person = { 'name': 'little bear', 'age': 18, 'sayHello': fu ...

  5. ES6 箭头函数 this 指向

    ES6 箭头函数 this 指向 箭头函数有几个使用注意点: 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象. 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个 ...

  6. ES6 箭头函数(Arrow Functions)

    ES6 箭头函数(Arrow Functions) ES6 可以使用 "箭头"(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器). 一.语法 具有一个参数的简单函 ...

  7. ES6箭头函数基本用法

    ES6箭头函数基本用法 ``` window.onload = function(){ alert(abc); } //箭头函数 window.onload = ()=>{ alert(&quo ...

  8. ES6 箭头函数this指向问题

    var name = "window"; var person1 = { name: "person1", show1: function() { consol ...

  9. Vue ES6箭头函数使用总结

    Vue ES6箭头函数使用总结   by:授客 QQ:1033553122   箭头函数 ES6允许使用“箭头”(=>)定义函数: 函数不带参数 定义方法:函数名称 = () => 函数体 ...

随机推荐

  1. 借助 Java 9 Jigsaw,如何在 60 秒内创建 JavaFX HelloWorld 程序?

    [编者按]本文作者为 Carl Dea,主要介绍利用 Jigsaw 项目在大约一分钟内编写标准化的"Hello World"消息代码.本文系国内 ITOM 管理平台 OneAPM ...

  2. Ubuntu安装ffmpeg

    二.linux源码安装: 如下: 下载 源码包:http://ffmpeg.org/releases/ffmpeg-3.3.tar.bz2 1.从网络上下载到的源码包,然后解压到指目录 假设下载目录 ...

  3. MyEclipse总是quick update解决办法

    这个问题的解决办法是关闭自动更新 1. Windows > Preferences > MyEclipse> Community Essentials, 把选项 "Sear ...

  4. rsync 数据同步

    什么是Rsync? Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地货远程数据同步备份的优秀工具.适用于unix/linux/windows等多种操作系统平台. Rsync具有可使本地 ...

  5. [WPF]DropShadowEffect导致Image模糊问题

    实现鼠标在图片上时,图片外侧有发光效果,如上图 可使用触发器修改Image控件的Effect属性 <Style.Triggers> <Trigger Property="I ...

  6. PgSQL基础之 pgsql与mysql的简单区别

    1.支持的booloan类型的值 mysql并不支持boolean类型,即便当我们创建了boolean的字段属性之后,mysql会自动将其转化为tinyint(1)类型.当插入“true”的时候,其值 ...

  7. Docker容器学习与分享10

    Docker容器向外提供服务 用分享04中的Nginx服务来试一下. 不过这次我直接用Nginx镜像创建容器,先下载Nginx镜像. [root@promote ~]# docker search n ...

  8. es5与es6继承思考

    es5与es6继承思考 es6继承 class Father{ constructor(name){ this.name = name; } getName(){ console.log(this.n ...

  9. PHP错误提示的关闭方法详解

    关闭PHP错误脚本提示是程序上线了必须做的一件事情,就是不管程序怎么报错我们都不能让错误日志在服务器上给大家看到,下面我来总结两种关闭PHP错误脚本提示的具体方法     最简单的办法就是直接在php ...

  10. windows10+Python3.6+Anaconda3+tensorflow1.10.0配置和安装

    windows10+Python3.6+Anaconda3+tensorflow1.10.0# Anaconda3安装自行下载安装,之后dos或Anaconda Prompt终端查看Anaconda3 ...