node.js学习笔记(24) 箭头函数-阿里云开发者社区

开发者社区> 开发与运维> 正文

node.js学习笔记(24) 箭头函数

简介: 箭头函数,是ES6的新特性,Node.js从v5.4.0开始支持。

11月下旬,我安装了Node.js-v5.1.0开始学习和使用Node.js。

然而Node.js开发团队在12月发布了v5.1.1,v5.2.0,v5.3.0,16年1月又发布了v5.4.0,v5.4.1,v5.5.0。这速度,是要坐火箭才能赶上呀……


言归正传,第一次看到"=>"这个符号是在v5.4.0的api文档中。文档中频繁出现这样的代码示例:

()=>{
...
}

通过查Node.js的更新说明得知,这就是箭头函数,是ES6的新特性,Node.js从v5.4.0开始支持。


那么我们先来跟传统函数对比学习一下箭头函数的语法吧!

1、没有参数的情况

传统函数:


var funcWithoutParam = function(){
    console.log('This is a function without param.');
}


箭头函数:


var funcWithoutParam = () => {
    console.log('This is a function without param.');
}

2、单个参数的情况

传统函数:


var funcWithOneParam = function(a){
    console.log('This is a function with a param: a='+a);
}


箭头函数:


var funcWithOneParam = a => {
    console.log('This is a function with a param: a='+a);
}

3、多个参数的情况

传统函数:


var funcWithThreeParam = function(a, b, c){
    console.log('This is a function with 3 params: a='+a +', b='+b+', c='+c );
}

箭头函数:


var funcWithThreeParam = (a, b, c) => {
    console.log('This is a function with 3 params: a='+a +', b='+b+', c='+c );
}

4、匿名函数

传统函数:


function(){
    console.log('This is a no name function.');
}

箭头函数:


() => {
    console.log('This is a no name function.');
}

箭头函数是ES6的新特性,它一定不是function的简单替代品,它们有哪些区别呢?

1、箭头函数不能用new来实例化

2、没有arguments对象

3、this不再善变


关于第3点,我们可以举个栗子。

传统函数的this很善变,作用域仅限与当前函数:

man = {
    name:'lee',
    init:function(){
        var self = this;
        var printName = function() {
            console.log(self.name);
        }
        printName();
    }
}
man.init();


箭头函数this取决于在哪儿定义,不可变:
man = {
    name:'lee',
    init:function(){
        var printName = () => {
            console.log(this.name);
        }
        printName();
    }
}
man.init();


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章