TypeScript 箭头函数表达式

箭头函数表达式,也可以成为 lambda 表达式,是形如 ()=>{something} 或 ()=>something

TypeScript 中的箭头函数表达式相当于 JavaScript 中的函数,它的好处是可以自动将函数中的 this 附加到上下文中

当我们尝试执行下面的 JavaScript 代码时

var shape = {
    name: "rectangle",
    popup: function() {

        console.log('This inside popup(): ' + this.name);

        setTimeout(function() {
            console.log('This inside setTimeout(): ' + this.name);
            console.log("I'm a " + this.name + "!");
        }, 3000);

    }
};

shape.popup();

会发现 this.name 是一个空值

但如果我们改用 TypeScript 的箭头函数,把 function() 替换为 () =>{}

var shape = {
    name: "rectangle",
    popup: function() {

        console.log('This inside popup(): ' + this.name);

        setTimeout( () => {
            console.log('This inside setTimeout(): ' + this.name);
            console.log("I'm a " + this.name + "!");
        }, 3000);

    }
};

shape.popup();

输出结果如下:

实际上,上面的 TypeScript 编译后,可以看到一行 var _this = this;

_this 在 setTimeout() 的回调函数引用了 name 属性

var shape = {
    name: "rectangle",
    popup: function () {
        var _this = this;
        console.log('This inside popup(): ' + this.name);
        setTimeout(function () {
            console.log('This inside setTimeout(): ' + _this.name);
            console.log("I'm a " + _this.name + "!");
        }, 3000);
    }
};
shape.popup();
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.