2016-04-28 25 views

回答

4

有一个差:调用的this使用的值时_createHelper2.default

随着

exports.default = (0, _createHelper2.default)(pure, 'pure', 1) 

_createHelper2.default将与this组被调用,以任一全局对象(松散模式)或undefined (严格模式)。

随着

_createHelper2.default(pure, 'pure', 1) 

_createHelper2.defaultthis设置为_createHelper2被调用。

(无论_createHelper2.default实际上看到用于呼叫的this值取决于使用它是否是一个正常的功能,装订功能,或箭头的功能;但是这在调用它的差异。 )

exports.default = (0, _createHelper2.default)(pure, 'pure', 1)作品使用逗号操作来获取函数引用没有相关属性信息,然后调用该函数不是通过属性访问,它绕过的U设置为this。所以这就像这样:

var f = _createHelper2.default; 
exports.default = f(pure, 'pure', 1) 
+0

为什么不用一个显而易见的'call'调用它,以后更容易理解? '_createHelper2.default.call(undefined,pure,'pure',1)' – smnbbrv

+0

@smnbbrv:它可能是缩小的代码,而不是人类实际编写或需要编辑的内容。有些人喜欢非常简洁的风格。 (我不是其中之一)。尽管如此,就像很多语言的成语一样,一旦你熟悉它,就会非常清楚。 –

+0

是的,当然,只是看起来很尴尬...我对类似的语法没有问题,但我可以想象新人如何讨厌它:) – smnbbrv