ES6的新增语法:箭头函数和this关键字

ES6 中,箭头函数就是函数的一种简写形式,使用括号包裹参数,跟随一个 => { },紧接着是函数体

由于箭头函数没有名字 所以通常都会将箭头函数赋值给一个变量 通过变量的名字来调用箭头函数

const fn = ( ) => { }

案例1: 简单写一个箭头函数 如果打印出123 证明是正确的

    const fn = () => {
        console.log(123);
    }
    fn();

 案例2: 函数体中 只有一句代码 且代码的执行结果就是返回值 可以省略大括号

计算n1+n2的和

    <script>
        //  es6之前的写法
        function sum(num1, num2) {
            return num1 + num2
        }
        var num = sum(10, 20)
        console.log(num);
        //  使用箭头函数的写法 省略掉大括号
        const sums = (n1, n2) => n1 + n2
        const nums = sums(10, 20);
        console.log(nums); //30
    </script>

箭头函数中的this关键字

函数中 this 总是绑定总是指向对象自身,函数位置定义位置的上下文this 具体可以看看下面几个例子: 

案例1:

function Person() {
  this.age = 0;
 
  setInterval(function growUp() {
    // 在非严格模式下,growUp() 函数的 this 指向 window 对象
    this.age++;
  }, 1000);
}
var person = new Person();

我们经常需要使用一个变量来保存 this,然后在 growUp 函数中引用:

function Person() {
  var self = this;
  self.age = 0;
 
  setInterval(function growUp() {
    self.age++;
  }, 1000);
}

而使用箭头函数可以省却这个麻烦:

function Person(){
  this.age = 0;
 
  setInterval(() => {
    // |this| 指向 person 对象
    this.age++;
  }, 1000);
}
 
var person = new Person();

案例2:  在this.age里弹出的age实际是window下面的 也就是全局变量下的 因为对象object 是不能产生作用域的 say方法实际是被定在了全局作用域下 say方法下面的this指向的是window 所以age=100

<script>
    var age = 100;

    var obj = {
        age: 10,
        say: () => {
            console.log(this.age);
        }
    }
    obj.say(); //100 
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值