ES6箭头函数

箭头函数:语义化函数:

(箭头函数的来源:lambda表达式、c++、java、coffeeScript (胖箭头、瘦箭头)、js)

基础语法:

   <script>
        //传统函数
        function foo(a, b) {
            console.log(a * b);//结果为6
        }
        foo(2, 3);
        // 箭头函数
        var foo1 = (a, b) => {
            console.log(a * b);//结果为9
        }
        foo1(3, 3);
    </script>

注意的点:

参数传递:

①若参数只有一个,小括号可以省略。(反之,参数有0个或者两个以上必须有())

 var foo1 = (a) => {
            console.log(a);
        }
     foo1(3);
//参数只有一个时,可以省略():
 var foo1 = a => {
            console.log(a);
        }
     foo1(3);

②当{  } 中只有一条逻辑语句时,{  }可以省略。(反之,若两条及以上语句时,必须加{  })

  var foo1 = a => console.log(a);
        foo1(3);
//当语句中有return时,必须加{ },或者把return 删除。

 EG:将普通函数简化为箭头函数:

   let arr = [1, 2, 3];
        console.log(arr.map(function(x){
            return x * x;
        }));
let arr = [1, 2, 3];
        console.log(arr.map(x => x * x));

注意:

this指向:

EG:当点击页面时,控制台输出“click”:

  //方法一
   var obj = {
            init: function() {
                // console.log(this);
                // this指向obj
                var that = this;
                document.addEventListener('click', function(event) {
                    // console.log(this); 原this指向document,先在that指向了obj
                    that.output(event.type);
                })
            },
            output: function(value) {
                console.log(value);
            }
        }
        obj.init();
 //方法二
var obj = {
            init: function() {
                document.addEventListener('click', function(event) {
                        this.output(event.type);
                    }.bind(this))
                    // bind()函数可以改变当前this指向
            },
            output: function(value) {
                console.log(value);
            }
        }
  obj.init();

箭头函数:可以理解为没有this指向,其this指向是借用父级this;且这个this指向是不可被更改的。

       var obj = {
            init: function() {
                document.addEventListener('click', (event) => {
                    this.output(event.type);
                })
            },
            output: function(value) {
                console.log(value);
            }
        }
        obj.init();
       var obj = {
            init: function() {
                console.log(this);
                // this指向obj
            }
        }
        obj.init();

使用箭头函数: (找父级作用域的this,且this指向不可更改)

       var obj = {
            init: () => {
                console.log(this);
                // this指向window
            }
        }
        obj.init();//this指向是不可更改的

不能使用arguments:(报错)

不能当做构造函数:(报错)

注:要考虑什么时候使用箭头函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值