代码之家  ›  专栏  ›  技术社区  ›  gsharp

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

  •  1
  • gsharp  · 技术社区  · 9 年前

    如果我有这样的片段

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

    然后ReSharper建议转换为

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

    但是,当函数使用 this

    module MyModule{
        export var myfunc = function(){
            var x = $(this);
        }
    }
    

    为什么转换不起作用 正在使用?

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

    1 回复  |  直到 9 年前
        1
  •  2
  •   Pointy    9 年前

    隐式设置箭头函数 this 在箭头函数被实例化的范围内。就好像你写了:

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

    我认为这背后的概念是,这种回调通常需要访问 值。正如你所看到的,有时他们不会。