JavaScript ES6 Arrow Functions(箭头函数)
1. 介绍
第一眼看到ES6新增加的 arrow function 时,感觉非常像 lambda 表达式。
那么arrow function是干什么的呢?可以看作为匿名函数的简写方式。
如:
var addition = function(a, b) { return a + b };
// 等同
var addition = (a, b) => { return a + b };

2. 语法
arrow functions(箭头函数)主要有以下4种语法:
// 1)基本
(param1, param2, paramN) => { expression }
(param1, param2, paramN) => { return expression } // 2)只有一个参数时,括号是可选的
(singleParam) => { expression }
singleParam => { expression } // 3)不带参数时,在参数区域带有括号
() => { expression } // 4)函数主体若不带{}大括号,表示直接返回函数主体
(param1, param2, paramN) => { return expression }
(param1, param2, paramN) => expression // 等同于上面
3. 特性
3.1 没有自身this
arrow function没有自身的this,即在arrow function内部使用this时,此this指向创建此函数时的外部this。
场景:在Web开发时都会用到ajax的回调,回调函数内的this常常用外部创建的self、that、_this等变量暂存,而当回调函数采用arrow function方式时就可以直接使用外部的this。
示例:
var ajax = function(url, successCallback) {
// TODO ajax
successCallback && successCallback();
};
var productBLL = {
productName: '瓜子',
query: function() {
// arrow function
ajax('query', () => {
console.log(this); // => productBLL
console.log(this.productName); // => 瓜子(productBLL.productName)
});
}
};
productBLL.query();
3.2 call()、apply() 调用无法改变this
就像上面讲的arrow function没有自身的this,当用call()或apply() 调用箭头函数时无法改变函数主体内的this。
示例:
// 普通函数
var sayHello = function(userName) {
console.log('hi ' + userName);
console.log(this);
};
sayHello.call({ x: 1 }, 'polk'); // => this == { x: 1 } // 箭头函数
var sayHello2 = (userName) => {
console.log('hi ' + userName);
console.log(this);
};
sayHello2.call({ y: 2 }, 'polk'); // => this == window
3.3 没有arguments
使用arrow function创建的函数,自身是没有arguments成员。
var sayHello = (userName) => {
console.log('hi ' + userName);
console.log(arguments); // => Uncaught ReferenceError: arguments is not defined
};
3.4 arrow function作为某个对象的方法成员时,this指向非此对象
当某个对象的方法为arrow function时,那么此方法内的this指向并非是此对象。
示例:
var productBLL = {
productName: '瓜子',
sayName: function() {
console.log(this.productName);
},
sayName2: () => {
console.log(this.productName);
}
};
productBLL.sayName(); // => 瓜子
productBLL.sayName2(); // => undefined, this == window
4.扩展阅读
arrow function MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
JavaScript ES6 Arrow Functions(箭头函数)的更多相关文章
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
- arrow functions 箭头函数
ES6里新增加的,与普通方法不同的地方 1.this 的对象在定义函数的时候确定了,而不是在使用的时候才决定 2.不可以使用 new ,也就不能当构造函数 3.this 的值一旦确定无法修改 ...
- JavaScript:学习笔记(5)——箭头函数=>以及实践
JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...
- [js高手之路] es6系列教程 - 箭头函数详解
箭头函数是es6新增的非常有意思的特性,初次写起来,可能会觉得别扭,习惯之后,会发现很精简. 什么是箭头函数? 箭头函数是一种使用箭头( => )定义函数的新语法, 主要有以下特性: 不能通过n ...
- ES6学习之箭头函数
ES6学习笔记--箭头函数 箭头函数一直在用,最近突然想到重新看一下箭头函数的用法,所以这里做一些总结. 箭头函数长这个样子: let fn = a => a++; // fn 是函数名, a= ...
- JS ES6中的箭头函数(Arrow Functions)使用
转载这篇ES6的箭头函数方便自己查阅. ES6可以使用“箭头”(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器). 一.语法 基础语法 (参数1, 参数2, …, 参数N) => ...
- JavaScript初学者必看“箭头函数”
译者按: 箭头函数看上去只是语法的变动,其实也影响了this的作用域. 原文: JavaScript: Arrow Functions for Beginners 译者: Fundebug 为了保证可 ...
- es6学习笔记--箭头函数
基本用法 ES6允许使用“箭头”(=>)定义函数. var f = v => v; 上面的箭头函数等同于: var f = function(v) { return v; }; 如果箭头函 ...
- 前端项目中常用es6知识总结 -- 箭头函数及this指向、尾调用优化
项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2. ...
随机推荐
- css3实现图片旋转效果
css3实现图片旋转效果 近期实现一个消息提醒(醒目)的需求页面.想到了css3的旋转动画,故使用. =============== 鼠标悬浮时候,图片可以旋转,放大 rotate(360deg) s ...
- css半透明边框
html <div class="parent"> <div class="translucent">I am Bob</div& ...
- WKWebView强大的新特性
iOS11对WKWebView的功能进一步完善,新增如下功能: Manager Cookies Fileter unwanted content Provide custom resources 下面 ...
- (转)Linux下运行python
原文: http://blog.csdn.net/jackywgw/article/details/48847187 在linux命令行下运行python,可以直接输出hello world jack ...
- kali系统教程:创建热点
1:把网卡改成混杂模式 sduo airmon-ng start wlan0 2:aircrack套件创建一个fake-ap airbase-ng -e fake-ap -c wlan0mon 此时, ...
- MariaDB的"response time"插件
"响应时间"是衡量数据库性能的常用指标.在MariaDB中可以使用插件"QUERY_RESPONSE_TIME"来获取查询时间区间的统计信息. // 安装插 件 ...
- web页面接入QQ客服的方法
在做微信二次开发的时候或者手机版网页的时候有人想在接qq客服,下面我就分享一下具体操作: 1,准备一个QQ号,可以是企业QQ,也可以是个人QQ.登录网址:http://shang.qq.com/wid ...
- DIV里面的图片水平与垂直居中的方法
<div class=“box”> <img /> </div> 1.水平居中: 1)box设置 text-align:center ; text-alig ...
- Django之路由分发系统
web的基本工作流程 首先,我们先来思考一下我们平常在上网浏览网页时候的场景,大致就是打开一个web浏览器,输入某一个网站的地址,然后转到该网址,在浏览器中得到该网址的页面.从这个场景中我们可以抽象出 ...
- 【转载】从头编写 asp.net core 2.0 web api 基础框架 (2)
Github源码地址是: https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scra ...