在TypeScript的代码中,我看到了
(() => {
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 :(得分:0)
您的代码可以从
中分解@DELETE
为...
(() => {
const title = 'New Document'
NewDoc.initialize = () => {
render(
<App title={title} />,
document.querySelector('#contnr')
);
};
render(
<Progr />,
document.querySelector('#contnr')
);
})();
您看到的括号是将lambda(匿名函数)包装在括号中,以便您可以调用它。
答案 1 :(得分:0)
在JavaScript中,这些函数被称为 IIFE (立即调用函数表达式),它只是函数的定义并立即调用它! 到底有什么好处呢?很多原因......
但是,在我们说明原因之前,请注意箭头功能不是您问题的一部分,因为您的示例中没有this
...
此问题还不是 与TypeScript相关。
很多原因很多:
答案 2 :(得分:-1)
尾随()
调用匿名函数。这也适用于function
s。
由于您的代码已经使用了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不再有用,因为const
和let
可用,var
变量的范围不尊重简单的花括号。