2017-03-10 2 views
1

야생에서 코드 :이상한 자바 스크립트 함수 호출 구조 (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을 만들 수 있다는 이점이 있습니다.

관련 문제