函数表达式可以转换为lambda表达式

时间:2015-09-01 13:05:53

标签: javascript typescript resharper

如果我有这样的代码段

module MyModule{
    export var myfunc = function() {
    }
}

然后ReSharper建议转换为

module MyModule{
    export var myfunc = () => {
    }
}

但是当函数使用this

时,它无法正常工作
module MyModule{
    export var myfunc = function(){
        var x = $(this);
    }
}

为什么在使用this时转换无效?

(如果你想知道为什么我在模块中使用this,那是因为这个方法是一个事件处理程序)

1 个答案:

答案 0 :(得分:2)

隐式设置箭头函数,使this是实例化箭头函数的范围内的任何内容。就像你写的那样:

var myfunc = () => { ... } .bind(this);

我认为背后的概念是,这种回调通常需要从外部上下文访问this值。正如你所看到的,有时他们没有。