以下两个代码段均有效:

在js文件中使用IIFE:

(function initialize() {
  txtInput = document.getElementById('txtInput');
  txtResult = document.getElementById('txtResult');

  txtInput.value = "0";
  txtResult.value = "0";

}());

在html文件中的窗口加载事件上调用initialize():
window.addEventListener('load', initialize, false);

是一种比其他更好的方法;在性能方面还是其他方面?就目前而言,我更倾向于将事件侦听器添加到window对象,因为它更具可读性。

最佳答案

这取决于您何时要运行代码。如果您希望代码尽快执行,则可以使用IIFE,但是如果您不使用IIFE来保护变量和/或不污染全局范围,那么使用IIFE毫无意义。

(function initialize() {
    // do somthing
}());

要么
// do somthing

将在同一时间执行。

如果您想推迟执行,Web开发人员通常会使用三个时间点。底部是<script>,DOMContentLoad和window.onload。

从服务器获取后,将执行底部的
  • <script>
  • DOMContentLoaded基本上在HTML解析器读取</html>后立即执行。
  • 非常简化的window.onload在所有CSS,<img><script>已加载后执行。

  • 请注意,实际上,在async上具有诸如defer<script>之类的属性,这更加复杂。这就是为什么有大量的资源加载器可用的原因。

    09-25 15:22