deep-in-es6(六)
箭头函数 Arrow Functions
箭头函数在JavaScript诞生是就存在,JavaScript建议在HTML注释内包裹行内脚本,这样可以避免不支持JS代码的浏览器将JS显示为文本。
<script>
<!--
obj.style.height = "100px";//高度
//-->
</script>
老式浏览器将会代码解析成为两个不支持的标签和一条注释,只有新式浏览器才能识别出其中的JS代码。为了支持这种奇怪的hack方式,浏览器中的JavaScript引擎将<!-- 这四个字符解析为单行注释的起始部分,在node中也是。这种注释在ES6中背标中化了,但是在新标准中箭头函数被用来做其他的事情。
箭头序列-->同样是单行注释的一部分。古怪的是在HTML中-->之前的字符是注释的一部分,在在JS中-->之后的才是注释。但只有当箭头在行首时才会注释当前行,这是因为在其他上下文中-->是一个JS运算符:“趋向于”运算符!
function countdown(n) {
while(n --> 0) {//n趋向于0
console.log(n);
}
blastoff();
}
JavaScript中有一个有趣的特性,无论何时你需要一个函数时,可以想在添加的地方输入这个函数。
$("body").click(function() {
alert(0);
alert(2);
});
es6引入了一种编写函数的新语法:
es5:
var selected = allJobd.filter(function(job) {
return job.isSelected();
});
es6:
var selected = allJobs.filter(job => job.isSelect() );
当只有一个参数的简单函数时,可以使用新标准中的箭头函数:标识符=>表达式,无需输入function和return,一些大括号,小括号以及分号也可以省略。
如果有多个参数(没有参数,不定参数,默认参数,参数解构)的函数,需要用小括号包裹参数list。
es5:
function square(a,b) {
return a + b;
}
vae func = forEarch(add(a,b));
es6:
var func = foEach((a,b) => a+b,0);
出表达式外,箭头函数还可以包含一个块语句。
//es5
$("body").click(function(event) {
alert(0);
alert(12);
});
//es6:
$("body").click(event => {
alert(0);
alert(12);
});
注意:使用了箭头函数不会自动返回值,需要使用return语句将所需值返回。当时用箭头函数创建普通对象时,总是需要将对象包裹在小括号中。
var chewToys = pupies.map(pupy => {});//会报错
var chewToys = pupies.mao(pupy => ( {} ));//不会报错用小括号包裹空对象就可以。
箭头函数中的普通对象和代码块:
es6的规则是紧随箭头的{被解析为快的开始,而非对象的开始。所以如果使用箭头函数创建普通对象时要用小括号包裹起来。
箭头函数的this
箭头函数没有自己的this值,箭头函数内的this值继承自外围作用域。
{
addAll: function addAll(pieces) {
var self = this;
_.each(pieces,function(piece) {
this.add(piece);//this指代的是window或者undefined
self.add(piece);//子函数的self通过this传值解决
});
}
}
es6中就不必解决这种传值的方式
{
addAll: function(pieces) {
_.each(pieces,piece => this.add(piece));//他继承了外部addAllde this
}
}
箭头函数中没有arguments对象,可以使用不定参数,默认参数等。
deep-in-es6(六)的更多相关文章
- 转载 Deep learning:六(regularized logistic回归练习)
前言: 在上一讲Deep learning:五(regularized线性回归练习)中已经介绍了regularization项在线性回归问题中的应用,这节主要是练习regularization项在lo ...
- ES6(六) --- Symbol
概述: ES5 中属性名都是字符串,这容易就造成命名的冲突,特别是在混入模式(mixin模式)下.为解决这个问题ES6 引入了Symbol, Symbol是一种新的基本数据类型,表示独一无二的值! ...
- deep learning (六)logistic(逻辑斯蒂)回归中L2范数的应用
zaish上一节讲了线性回归中L2范数的应用,这里继续logistic回归L2范数的应用. 先说一下问题:有一堆二维数据点,这些点的标记有的是1,有的是0.我们的任务就是制作一个分界面区分出来这些点. ...
- [UFLDL] Basic Concept
博客内容取材于:http://www.cnblogs.com/tornadomeet/archive/2012/06/24/2560261.html 参考资料: UFLDL wiki UFLDL St ...
- [UFLDL] Linear Regression & Classification
博客内容取材于:http://www.cnblogs.com/tornadomeet/archive/2012/06/24/2560261.html Deep learning:六(regulariz ...
- 从ReadImage到ML- 一个不错的博客
实在对不起原作者,为了不把文章淹没在 转载的海洋里.... 原文链接: http://www.cnblogs.com/tornadomeet/archive/2012/09/26/270404 ...
- 六个漂亮的 ES6 技巧
六个漂亮的 ES6 技巧 转载 原文:2ality 译文:众成翻译 链接:http://www.zcfy.cc/article/346 在这篇文章里,我将演示 6 种 ES6 新特性的使用技巧.在每个 ...
- Deep Learning(深度学习)学习笔记整理系列之(六)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning论文笔记之(六)Multi-Stage多级架构分析
Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十六 ║Vue基础:ES6初体验 & 模块化编程
缘起 昨天说到了<从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十五 ║ Vue前篇:JS对象&字面量&this>,通过总体来看,好像大家对这一块不是很 ...
随机推荐
- studyLink
http://order.csdn.net/myorder/detail?id=850343 csdn
- 【Git 五】TortoiseGit中SSH密钥的配置方法
注意:我用的 TortoiseGit 版本是 2.6 的. 一.找到安装目录下的 bin 目录 二.点击 puttygen.exe 三.点击 Generate 生成完毕之后,将 public key ...
- Android组件Activity初探
1.Activity是什么 Activity是Android系统中的四大组件之一,在MVC模式中属于C控制层 M(Model 模型):Model是应用程序的主体对象. V(View 视图) ...
- string.split 应用
采用string.split将字符串依据分隔符,转换成字符串数组,生成的字符串数组中会包含空数组元素,需要通过StringSplitOptions.RemoveEmptyEntries参数选项去除. ...
- MyBatis学习总结(17)——Mybatis分页插件PageHelper
如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊情况请看重要提示. 想要使用分页插件?请看如何使用分页插件. 物理分页 该 ...
- HTML学习----------DAY1 第二节
使用 Notepad 或 TextEdit 来编写 HTML 可以使用专业的 HTML 编辑器来编辑 HTML: Adobe Dreamweaver Microsoft Expression Web ...
- 设计模式之Flyweight模式(笔记)
享元模式:运用共享技术有效地支持大量细粒度的对象. 适用场合:假设一个应用程序适用了大量的对象.而大量的这些对象造成了非常大的存储开销时就应该考虑使用. 首先定义一个IFlyweight接口 publ ...
- wxWidgets笔记_1_linux环境下wxwidgets的安装与配置
linux下wxwidgets环境的安装与配置 一.建立目标文件夹(自己定义) mkdir /opt/SCOTT 二.安装wxWidgets 1.wxWidgets版本号能够选用wxGTK-2.8.1 ...
- Whats the difference between git reset --mixed, --soft, and --hard?
https://stackoverflow.com/questions/3528245/whats-the-difference-between-git-reset-mixed-soft-and-ha ...
- js插件---IUpload文件上传插件(包括图片)
js插件---IUpload文件上传插件(包括图片) 一.总结 一句话总结:上传插件找到真正上传位置的代码,这样就可以知道整个上传插件的逻辑了, 找资料还是github+官方 1.如何在js中找到真正 ...