2017-03-10 12 views
1

コード:奇妙なJavaScriptの関数呼び出し構築物(0、<function>)()

return function decorateSource(DecoratedComponent) { 
    return (0, _decorateHandler2.default)({ 
     connectBackend: function connectBackend(backend, sourceId) { 
      return backend.connectDragSource(sourceId); 
     }, 
     containerDisplayName: 'DragSource', 
     createHandler: createSource, 
     registerHandler: _registerSource2.default, 
     createMonitor: _createSourceMonitor2.default, 
     createConnector: _createSourceConnector2.default, 
     DecoratedComponent: DecoratedComponent, 
     getType: getType, 
     collect: collect, 
     options: options 
    }); 
}; 

、問題の構造:

(0, _decorateHandler2.default)(...)

これで何が起こっていますかラップされた声明?

+0

おそらく関連するhttp://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript/9107367#9107367 – elclanrs

答えて

0

それは、このことに似ています:要素は括弧内にラップされているため、値として扱われます、そしてカッコ内の最後の値は以下によって関数として実行されていることで

(function(){ 
    // do something 
})(); 

を括弧。 0,は何もしていません。 0,を削除すると、コードの実行方法は変わりません。この場合、私は0,をちょうど難読化しています。_decorateHandler2.defaultが返すものはdecorateSourceです。これを行う利点(または上のコードサンプル)は、変数の範囲を制御し、グローバルスコープを汚染しないようにするclosureを作成することです。

関連する問題