我应该使用 IIFE 还是 window onload 来初始化?

2023-11-25

以下两个代码片段均有效:

在js文件中使用IIFE:

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

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

}());

Calling initialize()html 文件中的窗口加载事件:

window.addEventListener('load', initialize, false);

其中一种方法是否比另一种更好?是在性能方面还是其他方面?就目前情况而言,我更倾向于向窗口对象添加事件侦听器,因为它更具可读性。


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

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

or

// do somthing

将在同一时间点执行。

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

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

请注意,实际上,具有如下属性async and defer on <script>s,这个比较复杂,。这就是为什么有大量可用的资源加载器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该使用 IIFE 还是 window onload 来初始化? 的相关文章

随机推荐

  • 无法在 Android 上进行反向 DNS 查找

    我有一台通过 IP 地址连接到 Wifi 网络的 Android 设备 我在我的 Linux 计算机上对该 IP 地址进行了 NS 查找 并验证了该 IP 地址是否有相应的主机名 我有一段 Java 代码 当它在我的 Windows PC
  • java.lang.Exception 没有可运行的方法 junit

    我有一个套件 在其中添加了测试类 我正在使用 Surefire 来运行我的 JUnit 我的测试类以 test 结尾 并且方法具有 test 注释 如何解决这个问题 以下是针对这个不完整问题的各种建议 对于那些不幸被谷歌带到这里寻找这个常见
  • ssh2_exec不执行简单命令

    ssh exec 拒绝在 Windows 中执行命令 这是我的代码 它向我显示以下警告 Unable to request a channel from remote host in 首先 您不太可能使用以下命令连接到 Windows 服务
  • 透明 .NET 表单中的抗锯齿文本

    我有一个 C 应用程序 它显示当前时间 透明的 NET 表单 该表单没有控件 也没有边框 其属性 TransparencyKey 设置为 Form 的背景颜色 浅灰色 使其透明 所以用户只能看到文本 当前时间 文本在 PaintEventH
  • Java8 中的 Files.lines 跳过断行

    我正在使用 Files lines 读取一个非常大 500mb 的文件 它读取文件的一部分 但在某些时候它会因 java io UncheckedIOException java nio charset MalformedInputExce
  • 在 PHP 和 MySQL 中创建不带 HTTPS 的安全登录脚本

    Question Is 维基百科上的这篇文章在 PHP 和 MySQL 中创建安全登录脚本的好参考 在警告部分 作者强调该代码只能与 HTTPS 一起使用 我无法使用 HTTPS 但需要在 PHP 和 MySQL 中实现相对安全的登录脚本
  • C# 事件删除语法

    我对 C 中删除事件处理程序的语法感到困惑 Something new MyHandler HandleSomething add Something new MyHandler HandleSomething remove new 在每一
  • 两个 PCI 设备之间直接通信

    我有一个 NIC 卡和一个 HDD 它们都连接在 Linux 机器的 PCIe 插槽上 理想情况下 我希望将传入数据包传输到 HDD 而不涉及 CPU 或最少涉及 CPU 是否可以像这样沿着 PCI 总线建立直接通信 有谁知道要阅读什么内容
  • 从命令行运行 JUnit 测试套件

    如何从命令行运行 Junit 4 8 1 测试套件 另外我想使用 JUnit 4 8 引入的类别 有没有办法 我可以从命令行指定我想要运行的类别 Using java run JUnit核心类 另见here 类别应该与测试套件一起使用 Ru
  • JavaScript 中的 URL 帮助器

    我正在使用 jQuery Lightbox 作为我的图片库 按钮图像的 URL 是 Content Lightbox lightbox btn next gif 如果我的网址是 localhost Something1 Somtehing2
  • Visual Studio 2012 中缺少 Visual C++ 的先决条件

    我最近安装了vs2012我已经更新了我的 ClickOnce 应用程序 更准确地说 我第一次打开我的C project 这取决于我的主要 c 项目 我还没有更新它 一切都工作正常 VS 2012仍然能够看到 Visual C 2010 先决
  • 如何在java中打印给定整数a = 1234的最后两位数字

    如果我给出像 a 1234 这样的值 我只想打印最后两位数字 34 任何人都可以给我解决这个问题 int a 1234 System out print a number 100结果是最后 2 位数字 See ideone演示
  • 如果不向数据库(例如 SQL Server)提交事务会发生什么?

    假设我有一个查询 begin tran some other sql code 然后我忘记提交或回滚 如果另一个客户端尝试执行查询 会发生什么 只要你不COMMIT or ROLLBACK一个事务 它仍然在 运行 并且可能持有锁 如果您的客
  • FTP 协议中有类似 HTTP Range 标头的内容吗?

    假设我只想通过 FTP 传输文件的一部分 是否可以使用标准 FTP 协议 在 HTTP 中我可以使用范围标头在请求中指定远程资源的数据范围 如果是 1mb 文件 我可以要求 600k 到 700k 之间的字节 FTP中有类似的东西吗 我在读
  • 实体框架 4 - ApplyCurrentValues 与 ObjectStateManager.ChangeObjectState

    我们有一个 WCF 服务 其更新方法可以更新数据库中的客户 此方法从客户端获取一个分离的实体 void UpdtaeCustomer Customer detachedCustomer 我们想出了两种编写此方法的方法 1 context C
  • PDF打印视图问题

    我尝试过两种方式 1 正在创建一个WebView并加载我的pdf文档 我的应用程序几乎完成了打印过程的一部分 但在这方面我面临着打印问题 它没有完整的 A4 表格视图 任何人都可以帮忙吗 我使用了以下代码 public void creat
  • 标准化 Python Pandas 数据框中的一些列?

    下面的Python代码只返回一个数组 但我希望缩放后的数据替换原始数据 from sklearn preprocessing import StandardScaler df StandardScaler fit transform df
  • MVC 将数据从视图发送到控制器

    我对 MVC 3 还很陌生 我知道如何将强类型对象从控制器发送到视图 我现在拥有的是一个视图 其中包含一个由该数据组成的表 表单 用户可以在该视图 html 页面 中更改该数据 当他们单击 保存 时 如何将数据从视图发送回控制器 以便我可以
  • Java 和 C++ 运算符有什么区别吗?

    如果您采用 Java 的原始数字类型加上布尔值 并将其与 C 等效类型进行比较 那么运算符 例如优先级规则或位操作运算符的作用 是否存在任何差异 还是括号的作用 换句话说 如果我采用 Java 表达式并尝试在 C 中编译并运行它 它是否总是
  • 我应该使用 IIFE 还是 window onload 来初始化?

    以下两个代码片段均有效 在js文件中使用IIFE function initialize txtInput document getElementById txtInput txtResult document getElementById