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>,通过总体来看,好像大家对这一块不是很 ...
随机推荐
- 三分钟学会用SpringMVC搭建最小系统(超详细)_转载
前言 做 Java Web 开发的你,一定听说过SpringMVC的大名,作为现在运用最广泛的Java框架,它到目前为止依然保持着强大的活力和广泛的用户群. 本文介绍如何用eclipse一步一步搭建S ...
- 隐私:随机选择 MAC 地址
隐私:随机选择 MAC 地址 从 Android 8.0 开始,Android 设备在未连接到网络的情况下探测新网络时会使用随机 MAC 地址. 在 Android 9 中,您可以启用开发者选项(默认 ...
- 用xmanager6启动Linux上的图形界面程序
1.下载Xmanager6 并自行安装,这里不赘述了 2.打开Xmanager.启动Xstart 3.按提示输入:主机IP,协议,用户名,命令,完成后点击“保存”,接着点击“运行”,运行xmanage ...
- 学习参考《高性能MySQL(第3版)》中文PDF+英文PDF
学习mysql数据库时推荐看看mysql 领域的经典之作<高性能mysql(第3版)>,共分为16 章和6 个附录,内容涵盖mysql 架构和历史,基准测试和性能剖析,数据库软硬件性能优化 ...
- 通过JMeter来测试Quick Easy FTP Server的上传与下载性能
FTP性能测试 1.1背景说明 本测试选用的是一个小型的FTP服务器软件:Quick Easy FTP Server.Quick Easy FTP Server是一个全中文的FTP服务器软件,反应迅速 ...
- HDU 4906 Our happy ending
题意: Given a sequence a_1,a_2,...,a_n, if we can take some of them(each a_i can only be used once), a ...
- Python安装(一)
Python的安装 打开python的官网 进入下载界面 选择下载 安装步骤如下所示: 安装完成进入到dos界面,输入python -V,如下图展示及成功 打开Python工具 1:: print() ...
- Vs2012在Linux开发中的应用(1):开发环境
在Linux的开发过程中使用过多个IDE.code::blocks.eclipse.source insight.还有嵌入式厂商提供的各种IDE.如VisualDsp等,感觉总是不如vs强大好用.尽管 ...
- bug14052601
AppDelegate.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall cocos2d::ui::Margin::Margin(void ...
- Mahout-HashMap的进化版FastByIdMap
FastByIdMap是基于散列的.在处理冲突时是线性探測而非分离链接,这样就不必为每个条目添加一个Map.Entry对象.从而节省内存开销. 以下代码是一个线性探測Map的Demo: package ...