Arrows => 箭头函数

箭头函数,若有了解过coffeeScript的同学,或许对此印象深刻,因为它可以让语法省略不少,特别是对于回调函数,会让代码更清晰简洁。

expression

让我们来写一个最简单的arrows。

var sum = (a, b) => a + b; //此为expression
------编译后-------
var sum = function (a, b) {
return a + b;
};

从上面的代码,可以看到,大致是差不多的,我们把function变成了=>,然后将arguments写在括号里(若参数只有一个,则不需要括号。但没有参数,还是需要一个空括号的,切记)。还有要注意这样的expression写法,是仅仅支持单行且自动生成return的。

statement

这次我们写一个带有回调函数的arrows。

numbers.forEach(num => {
if(num % 5 === 0){
fiveTimesArr.push(num);
}
})
------编译后------
numbers.forEach(function (num) {
if (num % 5 === 0) {
fiveTimesArr.push(num);
}
});

可以看到,编译后是不存在return的,若需要返回这个数组需要手动添加。

Lexical this

最后来看看,最酷炫的this,我们看一下在arrows里this的表现。

var obj = {
key1: 'value1',
key2: [1, 2, 3, 4, 5],
func() {
this.key2.forEach(item =>console.log(this.key1));
}
}
------编译后------
var obj = {
key1: "value1",
key2: [1, 2, 3, 4, 5],
func: function func() {
var _this = this; this.key2.forEach(function (item) {
return console.log(_this.key1);
});
}
};

可以看到,在forEach函数里,this自动绑定为obj中的this,这个特性,可以让我们免于非常多的烦恼。当然如果我们确实是需要回调中的this,则可以不使用arrows。直接使用我们最熟悉的原生函数即可。

最后在看一个例子来感受arrows带来的爽快的编程体验吧。

var square = arr =>
arr.map(num => num * num);
------编译后------
var square = function (arr) {
return arr.map(function (num) {
return num * num;
});
};

ES6学习(2)——arrows箭头函数的更多相关文章

  1. ES6学习笔记<三> 生成器函数与yield

    为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...

  2. JavaScript:学习笔记(5)——箭头函数=>以及实践

    JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...

  3. 石川es6课程---4、箭头函数

    石川es6课程---4.箭头函数 一.总结 一句话总结: 相当于函数的简写,类似python lambda 函数,先了解即可 let show1 = function () { console.log ...

  4. JavaScript ES6 Arrow Functions(箭头函数)

    1. 介绍 第一眼看到ES6新增加的 arrow function 时,感觉非常像 lambda 表达式. 那么arrow function是干什么的呢?可以看作为匿名函数的简写方式. 如: var ...

  5. es6新特性之箭头函数

    <script> { // es3,es5 var evens = [1, 2, 3, 4, 5]; var odds = evens.map(function (v) { return ...

  6. es6学习笔记10--箭头函数

    基本用法 ES6允许使用“箭头”(=>)定义函数. var f = v => v; 上面的箭头函数等同于: var f = function(v) { return v; }; 如果箭头函 ...

  7. ES6系列_7之箭头函数和扩展

    1.默认值 在ES6中给我们增加了默认值的操作相关代码如下: function add(a,b=1){ return a+b; } console.log(add(1)); 可以看到现在只需要传递一个 ...

  8. ES6入门五:箭头函数、函数与ES6新语法

    箭头函数的基本用法与特点 函数与ES6新语法 一.箭头函数的基本用法与特点 声明箭头函数采用声明变量和常量的关键字:var.let.const 箭头函数的参数:没有参数用"()"空 ...

  9. ES6新特性之箭头函数与function的区别

    写法不同 // function的写法 function fn(a, b){ return a+b; } // 箭头函数的写法 let foo = (a, b) =>{ return a + b ...

随机推荐

  1. 04-语言入门-04-Fibonacci数

    地址: http://acm.nyist.net/JudgeOnline/problem.php?pid=13    描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibona ...

  2. awk当中使用外部变量

    1.awk命令使用双引号的情况下 此时在awk命令里面使用\"$var\"就可以引用外部环境变量的var的值 $ var="BASH";echo "u ...

  3. sh.exe": grunt: command not found

    今天在git命令行工具中使用 grunt的时候,总是提示我找不到grunt命令,如: sh.exe": grunt: command not found 但是我运行 npm install ...

  4. 百度HTTPS加密搜索有什么用?

    前段时间,我曾提到百度支持移动端HTTPS SSL加密搜索,用以保护用户隐私.最近,百度开始支持PC端HTTPS SSL加密搜索,现在可以启用 https://www.baidu.com 搜索.我很少 ...

  5. Eclipse中设置在创建新类时自动生成注释

    方法一:Eclipse中设置在创建新类时自动生成注释 windows-->preference Java-->Code Style-->Code Templates code--&g ...

  6. maven常用构建命令

    mvn -v 查看maven版本 compile   编译项目 install   将项目加入到本地仓库中 clean   删除target test    测试 package     打包

  7. Mysql分支

    MySQL是历史上最受欢迎的免费开源程序之一.它是成千上万个网站的数据库骨干,并且可以将它(和linux)作为过去10年里Internet呈指数级增长的一个有力证明. 那么,如果MySQL真的这么重要 ...

  8. 图表框架HelloCharts(2)柱状图

    1.效果图 2.xml代码 activity_column_chart.xml <FrameLayout xmlns:android="http://schemas.android.c ...

  9. UVA 1001 Say Cheese 奶酪里的老鼠(最短路,floyd)

    题意:一只母老鼠想要找到她的公老鼠玩具(cqww?),而玩具就丢在一个广阔的3维空间(其实可以想象成平面)上某个点,而母老鼠在另一个点,她可以直接走到达玩具的位置,但是耗时是所走过的欧几里得距离*10 ...

  10. VirtualBox clonevdi文件和修改vdi的uuid

    因为VirtualBox下,不允许有相同的uuid,所以要拷贝一份新的vdi像普通的拷贝是办不到的.需要用VirtualBox自带的一个.exe文件VBoxManage. 1.首先,进入终端或者是命令 ...