博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6学习(2)——arrows箭头函数
阅读量:4313 次
发布时间:2019-06-06

本文共 1371 字,大约阅读时间需要 4 分钟。

Arrows => 箭头函数

箭头函数,若有了解过coffeeScript的同学,或许对此印象深刻,因为它可以让语法省略不少,特别是对于回调函数,会让代码更清晰简洁。

expression

让我们来写一个最简单的arrows。

var sum = (a, b) => a + b; //此为expression------编译后-------var sum = function (a, b) {    return a + b;};

从上面的代码,可以看到,大致是差不多的,我们把function变成了=>,然后将arguments写在括号里(若参数只有一个,则不需要括号。但没有参数,还是需要一个空括号的,切记)。还有要注意这样的expression写法,是仅仅支持单行且自动生成return的。

statement

这次我们写一个带有回调函数的arrows。

numbers.forEach(num => {    if(num % 5 === 0){        fiveTimesArr.push(num);    }})------编译后------numbers.forEach(function (num) {    if (num % 5 === 0) {        fiveTimesArr.push(num);    }});

可以看到,编译后是不存在return的,若需要返回这个数组需要手动添加。

Lexical this

最后来看看,最酷炫的this,我们看一下在arrows里this的表现。

var obj = {    key1: 'value1',    key2: [1, 2, 3, 4, 5],    func() {        this.key2.forEach(item =>console.log(this.key1));    }}------编译后------var obj = {    key1: "value1",    key2: [1, 2, 3, 4, 5],    func: function func() {        var _this = this;        this.key2.forEach(function (item) {            return console.log(_this.key1);        });    }};

可以看到,在forEach函数里,this自动绑定为obj中的this,这个特性,可以让我们免于非常多的烦恼。当然如果我们确实是需要回调中的this,则可以不使用arrows。直接使用我们最熟悉的原生函数即可。

最后在看一个例子来感受arrows带来的爽快的编程体验吧。

var square = arr =>    arr.map(num => num * num);------编译后------var square = function (arr) {    return arr.map(function (num) {        return num * num;    });};

转载于:https://www.cnblogs.com/YikaJ/p/4311425.html

你可能感兴趣的文章
回测引擎代码分析流程图
查看>>
Excel 如何制作时间轴
查看>>
matplotlib绘图跳过时间段的处理方案
查看>>
vnpy学习_04回测评价指标的缺陷
查看>>
iOS开发中遇到的问题整理 (一)
查看>>
Linux(SUSE 12)安装jboss4并实现远程访问
查看>>
Neutron在给虚拟机分配网络时,底层是如何实现的?
查看>>
netfilter/iptables全攻略
查看>>
Overlay之VXLAN架构
查看>>
Eclipse : An error occurred while filtering resources(Maven错误提示)
查看>>
在eclipse上用tomcat部署项目404解决方案
查看>>
web.xml 配置中classpath: 与classpath*:的区别
查看>>
suse如何修改ssh端口为2222?
查看>>
详细理解“>/dev/null 2>&1”
查看>>
suse如何创建定时任务?
查看>>
suse搭建ftp服务器方法
查看>>
centos虚拟机设置共享文件夹并通过我的电脑访问[增加smbd端口修改]
查看>>
文件拷贝(IFileOperation::CopyItem)
查看>>
MapReduce的 Speculative Execution机制
查看>>
大数据学习之路------借助HDP SANDBOX开始学习
查看>>