2017-08-14 101 views
0

箭頭功能在打字稿代碼只見語法與打字稿

(() => { 
    const abc = 'blabla'; 
    ... 
})(); 

是什麼語法意味着什麼?我知道箭頭功能是JS - 我是這麼理解的:

() => { 
    const abc = 'blabla'; 
    ... 
}); 

但是,什麼是括號其餘的興趣呢?

PS:原代碼

(() => { 
    const title = 'New Document' 

    NewDoc.initialize =() => { 
     render(
      <App title={title} />, 
      document.querySelector('#contnr') 
     ); 
    }; 

    render(
      <Progr />, 
      document.querySelector('#contnr') 
    ); 

})(); 

謝謝

+0

在這個上下文中,它看起來像它只是一個函數(比寫出'function'略短),然後立即調用它。鑑於它不使用'this' - 我認爲它可以使用'function'符號來代替。 –

+0

這是一個IIFE或「立即調用函數表達式」 –

+2

它只是一個[立即調用函數表達式](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)使用箭頭函數 –

回答

0

在JavaScript中,這些函數被稱爲IIFE(立即調用的函數表達式),它只是一個函數的定義並立即調用它! 這有什麼好處?原因是多方面的......

但是,在我們進入的原因之前,請注意箭頭功能是你的問題的一部分,因爲有沒有this在你的例子...

也並不表明問題是不是與TypeScript相關。

很少有許多原因:

  • 你去有一個範圍(由函數反應),不污染全局範圍。
  • 可以定義一個「私人」功能,這些功能在IIFE之外是無法訪問的
  • 您可以控制進入和退出此功能的功能。
-1

尾隨()調用匿名函數。這也可以用functions。

由於您的代碼已經使用了ES6功能,因此只需使用簡單的大括號花括號即可。在您的示例中,它將title的範圍限制爲使代碼更易於預測的大括號。該title常數是不可見的{之前和}後(不污染文件的其餘部分):

{ 
    const title = 'New Document' 

    NewDoc.initialize =() => { 
     render(
      <App title={title} />, 
      document.querySelector('#contnr') 
     ); 
    }; 

    render(
      <Progr />, 
      document.querySelector('#contnr') 
    ); 

} 

在同一個文件,你現在可以有花括號的第二塊和做別的事情與不同的標題,而不必修改該第一標題:

{ 
    const title = 'Other Document' 
    // do something with "title" 
} 

提示:避免var聲明。它們不再適用於ES6,因爲constlet可用,並且var變量的作用域不尊重簡單大括號。

0

你的代碼可以從

(() => { 
    const title = 'New Document' 

    NewDoc.initialize =() => { 
     render(
      <App title={title} />, 
      document.querySelector('#contnr') 
     ); 
    }; 

    render(
      <Progr />, 
      document.querySelector('#contnr') 
    ); 

})(); 

被分解......

const myFunc =() => { 
    const title = 'New Document' 

    NewDoc.initialize =() => { 
     render(
      <App title={title} />, 
      document.querySelector('#contnr') 
     ); 
    }; 

    render(
      <Progr />, 
      document.querySelector('#contnr') 
    ); 
} 
(myFunc)(); 

你看到在括號包裹拉姆達(匿名函數),所以你可以把它叫做括號。

+0

'()'額外的設置允許你立即調用你的lambda。 '({...定義Lambda Here ...})(arg1,arg2,arg3)' –