Javascript 函数表达式可以转换为lambda表达式
如果我有这样一个片段Javascript 函数表达式可以转换为lambda表达式,javascript,typescript,resharper,Javascript,Typescript,Resharper,如果我有这样一个片段 module MyModule{ export var myfunc = function() { } } 然后ReSharper建议转换为 module MyModule{ export var myfunc = () => { } } 但是,当函数使用此 module MyModule{ export var myfunc = function(){ var x = $(this); } } 当
module MyModule{
export var myfunc = function() {
}
}
然后ReSharper建议转换为
module MyModule{
export var myfunc = () => {
}
}
但是,当函数使用此
module MyModule{
export var myfunc = function(){
var x = $(this);
}
}
当使用此
时,为什么转换不起作用
(如果您想知道为什么我在模块中使用
this
,这是因为该方法是一个事件处理程序)一个arrow函数被隐式设置为this
在arrow函数实例化的范围内是什么。就像你写的:
var myfunc = () => { ... } .bind(this);
我认为这背后的概念是,通常情况下,这样的回调确实希望从外部上下文访问
this
值。正如您所看到的,有时它们不会。您的意思是resharper不建议将函数转换为箭头函数,因为您正在使用此?@minus-four?我阅读问题的意思是,当OP进行转换时,当函数希望像在传统函数中一样绑定此
时,它不起作用。(例如,当将函数传递给jQuery.each()
)时,您期望的工作方式是@MinusFour我需要编辑我的答案。刚发现当函数在模块内时它不工作。