目前,我正在学习TypeScript。我对关键字函数和=>之间的区别感到很困惑。 (胖箭)。请参阅以下代码:
module StructVivificator
def self.prepended(base)
base.send(:define_method, :default_proc) do |&λ|
instance_variable_set(:@λ, λ)
end
end
def [](name)
super || @λ && @λ.() # or more sophisticated checks
end
end
Foo = Struct.new(:bar) do
prepend StructVivificator
end
foo = Foo.new
foo.default_proc { 42 } # declare a `default_proc` as in Hash
foo[:bar] += 1 # => 43
foo.bar += 1 # => 44
似乎胖箭头与关键字功能的作用不同。
答案 0 :(得分:3)
与函数表达式相比,胖箭头函数具有更短的语法,并且词法绑定此值。箭头函数始终是匿名的,可以有效地将function (arguments) { return expression; }
转换为(arguments) => expression
。如果在箭头后面使用表达式,则返回是隐式的,因此不需要返回。
答案 1 :(得分:2)
所有关于在JavaScript中保持上下文/范围。看看这里:What is this in JavaScript and Typescript。