2016-04-28 114 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