命名空间内的匿名函数

时间:2015-07-28 10:19:48

标签: javascript typescript

我正在学习打字稿但我在尝试理解一些事情时遇到了一些问题。

我看过这段代码:

module Games {

((): void => {

    alert("");
);
})();
}

但是当符合javascript时,如果我将其更改为下面的结果,我会得到相同的结果:

module Games {

    alert("");
})();
}

我有没有理由在第一个例子中编写类似的内容,或者只是代码不好。

2 个答案:

答案 0 :(得分:0)

在您的示例中,没有理由这样做。

更一般地说,设置函数会创建一个本地范围,允许您使用其中的变量,而模块的其余部分无法访问它。这降低了模块不同部分中变量覆盖彼此的风险,因为它们共享一个名称。

答案 1 :(得分:0)

首先从这个工作示例开始......

module Games {
    ((): void => {
        alert("");
    })();
}

当您将TypeScript编译为JavaScript时,当前最终得到以下结果 - 模块变为并立即调用函数表达式...

var Games;
(function (Games) {
    (function () {
        alert("");
    })();
})(Games || (Games = {}));

稍后当您定位ECMAScript的更高版本时,您可能会发现该模块实际上存在于JavaScript中(因为这只是对ECMAScript计划的功能的早期访问)。

除非你有充分的理由想要在模块中使用,否则我建议进行以下调整......

module Games {

}

((): void => {
    alert("");
})();

我认为这将更好地适应未来的变化。