箭头函数 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对象,可以使用不定参数,默认参数等。

最新文章

  1. 解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
  2. springmvc处理上传图片代码(校验图片尺寸、图片大小)
  3. 本周进步要点20161023(含李笑来第二场live笔记要点)
  4. Struts2第一个例子Hello World!
  5. [转]GameObject的Active与InActive
  6. JS浮点数运算BUG破法
  7. 查看 dmp 字符集
  8. 孟岩的c++ 的学习方法,这何尝有不是做人做事的方法呢?
  9. #include &lt;strstream&gt;
  10. poj 4044 Score Sequence(暴力)
  11. greatis很不错,出售源代码
  12. Scope and Namespace
  13. 基于百度地图SDK和Elasticsearch GEO查询的地理围栏分析系统(2)-查询实现
  14. 10-8 uva1262密码
  15. React Native移植原生Android
  16. shell杀死指定端口的进程
  17. yarn查询/cluster/nodes均返回localhost
  18. AngularJs实现全选功能
  19. centos7 新增ip
  20. Mongodb--基础(连接,增删改查,数据类型)

热门文章

  1. cuda thrust函数首次调用耗费时间比后续调用长原因
  2. Linux 文件系统详解
  3. opencv——图像的灰度处理(线性变换/拉伸/直方图/均衡化)
  4. python描述符和属性查找
  5. numpy基础篇-简单入门教程3
  6. 紫书 例题 10-24 UVa 1641(面积计算)
  7. python通过sigar收集服务器信息
  8. ArcGIS api for javascript——地理处理任务-计算一个可视域
  9. ArcGIS api for javascript——地图配置-定制平移动画
  10. 怎样查看电脑的IP地址