es6-箭头函数

2017-04-21  本文已影响0人  新林吃遍世界

1 变量定义

   let只在局部代码块中有效    const不希望修改,差不多跟常量一个意思吧

2 箭头函数

  【主要作用】:一是更简短的函数书写,二是对this的词法解析

     x = > x  *2            

相当于 function(x){ return x*2}

node   express.get('/aa",function(req,res){

             .....

})

现在你可以这样写

.get("/aa",(req,res)=>{

})

注意返回对象的话要用  ()=> ({

    a:1,b:2

})

你以为就这样?简化了匿名函数的写法,nonono,想想以前函数里面的this吧,

this所在的函数属于谁,他就代表。


以前我们要用jq写个购物车

var goodsDetail = {

     this.num = 10   //这是一个全局变量,

     init: function(){

           this.numAdd();    this属于goodsDetail

},

numAdd:function(){

           var  that = this;

          this  ----------this所在的函数为numAdd,     numAdd属于 goodDetail,so,this代表goodDetail

         $("#dom").click(function(){

            this  ------指代dom这个元素--------注意匿名函数的这种写法

})

}

}


【注】:在 ECMAScript 3/5 中,这个问题可以通过新增一个变量来指向期望的this对象,然后将该变量放到闭包中来解决。


那现在有了箭头函数呢?????

                                  妈妈再也不用担心我的this指向有问题了


箭头函数没有自己的this,他的this值继承自外部。而这里就是window对象了,所以会报undefined的错误。

可以简单的理解,JS 每一个 function 有自己独立的运行上下文,而箭头函数不属于普通的 function,所以没有独立的上下文。所以在箭头函数里写的this其实是包含该箭头函数最近的一个function上下文中的this(如果没有最近的function,就是全局)。

上一篇 下一篇

猜你喜欢

热点阅读