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

标签 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,那是因为这个方法是一个事件处理程序)

最佳答案

箭头函数是隐式设置的,因此 this 是箭头函数实例化范围内的任何内容。就好像你写道:

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

我认为这背后的概念是这样的回调确实希望从外部上下文访问 this 值。如您所见,有时它们不会。

关于javascript - 函数表达式可以转换为 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32332486/

相关文章:

typescript - 在 for in 循环中丢失枚举类型信息

class - TypeScript 类和同名接口(interface)之间的关系

C# 8 理解 await 使用语法

javascript - Java从浏览器读取不同body长度的字节流

没有http ://的javascript window.open

javascript - jQuery 在按钮后追加

c# - 我如何跳转到 Resharper 中的下一个引用?

javascript - Angularjs/HTML 在单击时显示和隐藏 li 元素

javascript - 转义 Angular 模板表达式以在 Angular HTML 组件模板中显示?

resharper - Visual Studio 中的包和程序集之间有什么联系?