2017-08-14 84 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)' –