实战 es6_Node.JS实战65:ES6新特性:箭头函数
有人说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新特性:箭头函数相关推荐
- ES6新特性(函数默认参数,箭头函数)
ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式: 从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...
- ES6新特性之函数优化-函数属性简写、箭头函数和解构表达式结合使用
对象的函数属性简写 比如一个Person对象,里面有eat方法: let person = { name: "jack", // 以前: eat: function (food) ...
- ES6新特性之函数优化-箭头函数
箭头函数 ES6中定义函数的简写方式: 一个参数时: var print = function (obj) { console.log(obj); } // 简写为: var print2 = obj ...
- ES6新特性之函数优化-参数默认值
函数优化 在ES6中,对函数的操作做了优化,使得我们在操作函数时更加的便捷. 函数参数默认值 在ES6以前,我们无法给一个函数参数设置默认值,只能采用变通写法: function add(a , b) ...
- 实战 es6_Node.JS实战64:ES6新特性:Let和Const
以往版本的JS中,如果你在if中定义一个变量,这个变量在if外部也是可以访问的,而不管if条件是否被执行,如: if(false){ var x = "hello JShaman" ...
- ES6新特性_ES6函数参数的默认值设置---JavaScript_ECMAScript_ES6-ES11新特性工作笔记011
然后我们再去看,es6中的函数参数的默认值的设置. 可以看到上面我写了个函数,然后 我们调用一下这个函数,并且打印了结果. 然后我们去看,如果我们调用这个函数的时候不写第3个参数 那么,可以看到得到的 ...
- ES6新语法--箭头函数
箭头函数 /*** 箭头函数:实质就是一个函数固定格式的简写* * 简写的规则* function 改为 => =>读为goesto* 如果只有一个形参,可以省略形参小括号;* 如果有0个 ...
- lsdyna如何设置set中的node_list_如何快速掌握es6+新特性及核心语法?
国庆刚刚结束,我们开始一波新的学习进程吧. ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.作为前端必备技能,我们来快速开始吧 接 ...
- 一文快速掌握 es6+新特性及核心语法
首先先祝各位节日快乐,好好去体验生活的快乐,在假期最后一天里,祝大家收获满满,同时抓住假期的尾巴,收割实用技能. 接下来我会总结一些工作中常用也比较核心的es6+的语法知识,后面又要慢慢开始工作之旅了 ...
最新文章
- 京东运营插件_技术中台产品经理必知的那些易混词儿(1):组件、套件、 中间件、插件……...
- python socket 通信
- 一文看懂集成学习(详解 bagging、boosting 以及他们的4点区别)
- swift_033(Swift 必备和常用第三方库以及pod使用)
- (传送门)微信公众号推送文章(个人认为未来可能对我有用的部分)
- numpy.tile 阵列
- leetcode64 最小路径和
- ORACLE 进入sqlplus的协议适配器错误
- Swift 3.0 (二)
- Java Web开发入门 - 第2章 HTTP协议单元作业
- 7-2 查找指定字符 (15 分)
- 编译原理第五章课后题
- TX2 配置xbox360无线手柄
- 洛伦茨曲线_洛伦兹曲线
- 微信公众号接入自己的客服系统,自定义客服系统
- 测试工程师如何跟进用户反馈
- 小程序关注微信公众号的方法
- 哔哩哔哩2020校园招聘前端笔试卷(一)
- 生成模型笔记预备知识笔记——概率分布变换
- unity 卡通风格渲染
热门文章
- Protocol buffer的使用案例
- .以及JDK1.5ConcurrentHashMap新特性
- 企业所得税汇算清缴系统服务器,【图解】汇算清缴风险控制本周五发布,操作流程这里全有!...
- java 实现loading效果_简单实现JS Loading功能
- java向另一activity输入_Android中调用另一个Activity并返回结果-以模拟选择头像功能为例...
- python 向量元素判断_python;计算向量的元素
- oracle怎么判断是裸设备安装,Oracle 9i下以裸设备方式安装数据库
- rabbitmq 启动异常_RabbitMQ:消息发送确认 与 消息接收确认(ACK)
- linux生成数字命令,Linux下随机生成密码的命令
- asp和php数据库怎么区分,asp与php的数据库有哪些区别