摘要:注意箭头函数有几个使用注意点不可以使用对象,该对象在函数体内不存在。不可以当作构造函数,也就是说,不可以使用命令,否则会抛出一个错误。不可以使用命令,因此箭头函数不能用作函数。
前言
在JavaScript的世界中函数被誉为一等公民,每当我们需要在JS定义一个新的函数,我们都会毫不犹豫的function() {},也许我们可以开始换一种方式来定义一个函数,也就是本文的主角箭头函数,一个来自ECMAScript 2015(又称ES6)的全新特性。
语法var func = p => p
上面的代码等价于
var func = function(p) { return p }
看出差异了么?最明显的,我们不再需要写function这个关键字,只要使用=>箭头即可定义一个函数。我们在定义函数的时候根据根据需求的不同,箭头函数也有一些细微的差异,我们来列举一下:
如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。
// 无参函数 var func1 = () => 1 // 多参(大于1)函数 var func2 = (a, b) => a + b
如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。
// 不需要显示return var func = p => p // 需要大括号并且显示return var func p => { var a = p + 1 return a }特性
箭头函数除了让我们少写几个字母外难道没有更牛逼的特性?必须不是!下面我们来介绍一个牛逼闪闪的特性:父作用域共享关键字this。
JavaScript中的this做为一个古老的特性,有一个非常坑爹的特性this永远指向的是当前函数的上下文
document.addEventListener("click", function() { setTimeout(function() { console.log(this) // ? }) }, false)
在运行上面代码时,this指向的是什么呢?答案是window,原因是setTimeout是window对象下的一个方法。但是我们此时希望的是获取到document,怎么解决呢,传统的办法是添加一个变量self保持对this的引用。
document.addEventListener("click", function() { var self = this; setTimeout(function() { console.log(self) // self => document }) }, false)
但是这种方法显示不够优雅,这个时候我们就可以利用箭头函数来解决它,因为它不产生属于它自己的this。
document.addEventListener("click", function() { var self = this; setTimeout(() => { console.log(this) // this => document }) }, false)注意
箭头函数有几个使用注意点:
不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用解构参数代替。
不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
不可以使用yield命令,因此箭头函数不能用作Generator函数。
总结箭头函数应该是我们在ES6中使用最多的,也是我最喜欢的特性之一,箭头函数使得表达更加简洁。当第一眼看到它的写法时,就被它的优雅所吸引,建议大家多多尝尝ES6的各种新特性。
参考MDN
ECMAScript 6 入门
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/79123.html
摘要:使用箭头函数和构造函数当方法被调用时,会保留上下文。我们能使用这个特征用下面的方法在构造函数中重定义函数。在调用方法的方使用函数绑定语法你也可以直接在非构造函数里面的里面直接使用函数绑定。 这是React和ECMAScript6/ECMAScript7结合使用系列文章的第三篇。 下面是所有系列文章章节的链接: React 、 ES6 - 介绍(第一部分) React类、ES7属性初始...
摘要:版本截图当然,搜狗浏览器市场份额也不低,官方最新版本是,内核版本是,为之一惊。上面代码的和分别是什么含义呢如果是下面的配置有何不可呢首先来明确一个概念是一系列的集合。比如做移动端开发不需要考虑之类的端产品线只考虑指定的浏览器等。 因babel的版本从5升级到6有很多改动,比如babel本身不再提供任何transform的工作,都需要借助插件来完成,本文的所有讨论都是建立在babel 6...
摘要:以下例子的目的是使用来展示一个每秒都会更新的时钟当尝试在的回调中使用来引用元素时,很不幸,我们得到的只是一个属于回调函数自身上下文的。 前言 胖箭头函数(Fat arrow functions),又称箭头函数,是一个来自ECMAScript 2015(又称ES6)的全新特性。有传闻说,箭头函数的语法=>,是受到了CoffeeScript 的影响,并且它与CoffeeScript中的=>...
阅读 1756·2021-11-24 09:39
阅读 1686·2021-11-22 15:22
阅读 1002·2021-09-27 13:36
阅读 3229·2021-09-24 10:34
阅读 3328·2021-07-26 23:38
阅读 2632·2019-08-29 16:44
阅读 973·2019-08-29 16:39
阅读 1103·2019-08-29 16:20