有人说ES6(ES2015)最具魅力的是箭头函数。但真的,我不这么认为:箭头函数这玩意真是又丑又变扭!

不过,箭头函数确实有它的功能优势:

1、简洁:

(虽然我也不认为这是真的简洁,还是认为它是很变扭的)

看一段代码:

const numbers = [1,2,3];

const event = numbers.filter(function(x){

return x % 2 === 0;

});

用箭头语法重写是这样的:

const numbers = [1,2,3];

const event = numbers.filter(x => x % 2 === 0);

(真是种稀里糊涂的格式,不易理解 -_-!)

解释:

function关键字被删除,只留下参数,紧跟着的是箭头(=>),然是函数功能体。

如果参数列表中包含多个参数,必须用括号包裹,并用逗号分割。

此外,没有参数时,必须在箭头前用一组空括号:()=>{...}。

当函数的主体只是一行时,可以不使用return,因为它是隐式应用的。

2、绑定的词法作用域

直接用例子来说明:

function DelayedGreeter(name){

this.name = name;

}

DelayedGreeter.prototype.greet = function(){

setTimeout(function cb(){

console.log("hello " + this.name);

},500);

}

const greeter = new DelayedGreeter("world");

greeter.greet();

在这段代码中,期望输出Hello world,但world参数并未能传到cb函数的,所以输出会是:

不引入箭头函数时,如果想要得到正确的输出,需要进行bind操作:

function DelayedGreeter(name){

this.name = name;

}

DelayedGreeter.prototype.greet = function(){

setTimeout( (function cb(){

console.log("hello " + this.name);

}).bind(this) ,500);

}

const greeter = new DelayedGreeter("world");

greeter.greet();

但如果使用箭头函数,由于它具有绑定作用域的特性,可以较方便的实现上述同样的效果:

function DelayedGreeter(name){

this.name = name;

}

DelayedGreeter.prototype.greet = function(){

setTimeout( ()=> console.log("hello " + this.name) ,500);

}

const greeter = new DelayedGreeter("world");

greeter.greet();

在这个方面的应用确实是方便了一些。

实战 es6_Node.JS实战65:ES6新特性:箭头函数相关推荐

  1. ES6新特性(函数默认参数,箭头函数)

    ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式:   从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...

  2. ES6新特性之函数优化-函数属性简写、箭头函数和解构表达式结合使用

    对象的函数属性简写 比如一个Person对象,里面有eat方法: let person = { name: "jack", // 以前: eat: function (food) ...

  3. ES6新特性之函数优化-箭头函数

    箭头函数 ES6中定义函数的简写方式: 一个参数时: var print = function (obj) { console.log(obj); } // 简写为: var print2 = obj ...

  4. ES6新特性之函数优化-参数默认值

    函数优化 在ES6中,对函数的操作做了优化,使得我们在操作函数时更加的便捷. 函数参数默认值 在ES6以前,我们无法给一个函数参数设置默认值,只能采用变通写法: function add(a , b) ...

  5. 实战 es6_Node.JS实战64:ES6新特性:Let和Const

    以往版本的JS中,如果你在if中定义一个变量,这个变量在if外部也是可以访问的,而不管if条件是否被执行,如: if(false){ var x = "hello JShaman" ...

  6. ES6新特性_ES6函数参数的默认值设置---JavaScript_ECMAScript_ES6-ES11新特性工作笔记011

    然后我们再去看,es6中的函数参数的默认值的设置. 可以看到上面我写了个函数,然后 我们调用一下这个函数,并且打印了结果. 然后我们去看,如果我们调用这个函数的时候不写第3个参数 那么,可以看到得到的 ...

  7. ES6新语法--箭头函数

    箭头函数 /*** 箭头函数:实质就是一个函数固定格式的简写* * 简写的规则* function 改为 => =>读为goesto* 如果只有一个形参,可以省略形参小括号;* 如果有0个 ...

  8. lsdyna如何设置set中的node_list_如何快速掌握es6+新特性及核心语法?

    国庆刚刚结束,我们开始一波新的学习进程吧. ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.作为前端必备技能,我们来快速开始吧 接 ...

  9. 一文快速掌握 es6+新特性及核心语法

    首先先祝各位节日快乐,好好去体验生活的快乐,在假期最后一天里,祝大家收获满满,同时抓住假期的尾巴,收割实用技能. 接下来我会总结一些工作中常用也比较核心的es6+的语法知识,后面又要慢慢开始工作之旅了 ...

最新文章

  1. 京东运营插件_技术中台产品经理必知的那些易混词儿(1):组件、套件、 中间件、插件……...
  2. python socket 通信
  3. 一文看懂集成学习(详解 bagging、boosting 以及他们的4点区别)
  4. swift_033(Swift 必备和常用第三方库以及pod使用)
  5. (传送门)微信公众号推送文章(个人认为未来可能对我有用的部分)
  6. numpy.tile 阵列
  7. leetcode64 最小路径和
  8. ORACLE 进入sqlplus的协议适配器错误
  9. Swift 3.0 (二)
  10. Java Web开发入门 - 第2章 HTTP协议单元作业
  11. 7-2 查找指定字符 (15 分)
  12. 编译原理第五章课后题
  13. TX2 配置xbox360无线手柄
  14. 洛伦茨曲线_洛伦兹曲线
  15. 微信公众号接入自己的客服系统,自定义客服系统
  16. 测试工程师如何跟进用户反馈
  17. 小程序关注微信公众号的方法
  18. 哔哩哔哩2020校园招聘前端笔试卷(一)
  19. 生成模型笔记预备知识笔记——概率分布变换
  20. unity 卡通风格渲染

热门文章

  1. Protocol buffer的使用案例
  2. .以及JDK1.5ConcurrentHashMap新特性
  3. 企业所得税汇算清缴系统服务器,【图解】汇算清缴风险控制本周五发布,操作流程这里全有!...
  4. java 实现loading效果_简单实现JS Loading功能
  5. java向另一activity输入_Android中调用另一个Activity并返回结果-以模拟选择头像功能为例...
  6. python 向量元素判断_python;计算向量的元素
  7. oracle怎么判断是裸设备安装,Oracle 9i下以裸设备方式安装数据库
  8. rabbitmq 启动异常_RabbitMQ:消息发送确认 与 消息接收确认(ACK)
  9. linux生成数字命令,Linux下随机生成密码的命令
  10. asp和php数据库怎么区分,asp与php的数据库有哪些区别