函数和=>之间有什么区别?在TypeScript?

时间:2016-12-13 07:14:12

标签: javascript typescript ecmascript-6

目前,我正在学习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

似乎胖箭头与关键字功能的作用不同。

2 个答案:

答案 0 :(得分:3)

与函数表达式相比,胖箭头函数具有更短的语法,并且词法绑定此值。箭头函数始终是匿名的,可以有效地将function (arguments) { return expression; }转换为(arguments) => expression。如果在箭头后面使用表达式,则返回是隐式的,因此不需要返回。

答案 1 :(得分:2)

所有关于在JavaScript中保持上下文/范围。看看这里:What is this in JavaScript and Typescript