”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 是否有必要将字符串传递给 setTimeout?

是否有必要将字符串传递给 setTimeout?

发布于2024-11-08
浏览:985

Is It Ever Necessary to Pass Strings to setTimeout?

向 setTimeout 传递字符串:一个必要性问题

由于性能问题、潜在的安全风险及其不推荐使用,许多开发人员不赞成向 setTimeout 传递字符串的做法地位。然而,在极少数情况下,这种语法可能是有益的。

弃用争论

setTimeout 和 setInterval 的传统语法涉及传递一个表示要执行的代码的字符串。例如:

setTimeout('doSomething(someVar)', 10000);

然而,现代 JavaScript 提倡使用函数引用:

setTimeout(function() {
    doSomething(someVar);
}, 10000);

字符串的争论

在考虑是否有任何正当理由偏离推荐语法时,就会出现争论。一个可能的论据可能是希望访问驻留在全局范围内但可能已在本地覆盖的函数或变量。

反对字符串的案例

尽管有这一基本原理,但使用字符串强烈建议不要使用 setTimeout。全局变量仍然可以通过窗口对象的属性来访问。例如:

setTimeout(window.doSomething(someVar), 10000);

历史容差

允许将字符串作为 setTimeout 和 setInterval 的参数根源于历史因素。 JavaScript 的早期版本仅支持字符串。添加传递函数引用的功能是后来添加的。为了确保向后兼容性,浏览器仍然允许字符串语法,即使它已被弃用。

结论

虽然在某些情况下在技术上可以将字符串传递给 setTimeout,但实践通常不可行由于存在替代方法而推荐。使用函数引用可以提高性能、增强安全性并遵守现代代码准则。因此,为了清晰、可维护性和整体代码质量,应避免使用已弃用的字符串语法。

版本声明 本文转载于:1729380675如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Litlyx - 漏斗事件简介
    Litlyx - 漏斗事件简介
    Litlyx 正在成为一把瑞士军刀,作为收集网络分析的一体化工具。 实施非常简单,只需不到 30 秒! 最好的部分?我们提供自定义事件跟踪,具有最简单的用户体验。 在我们的仪表板中,一切都设计得直观且用户友好(尽管我们还没有聘请设计师,哈哈)。 漏斗图 漏斗图的想法来自我们的一位付费...
    编程 发布于2024-11-08
  • 如何从头开始制作 URL 缩短器
    如何从头开始制作 URL 缩短器
    从头开始制作应用程序是我最喜欢的学习应用程序工作原理的方式。这篇文章将讨论如何从头开始制作 URL 缩短器。 URL 缩短器非常容易制作,在我看来,这是初学者学习语言的好方法。更困难的部分是添加自定义域、分析、分组链接以及在 URL 缩短服务之上添加的其他功能。因此,您可以按照以下方法从头开始制作一...
    编程 发布于2024-11-08
  • 快速工程(针对懒惰的程序员):准确获取您想要的代码(甚至更多,从 ChatGPT 中获取)
    快速工程(针对懒惰的程序员):准确获取您想要的代码(甚至更多,从 ChatGPT 中获取)
    比尔盖茨已经说了这一切......做一个懒惰的程序员!. 作为一名程序员,没有什么比立即运行的代码更好的了——没有错误,没有无休止的调试。通过遵循某些提示技术,您不仅可以让 ChatGPT 编写代码,还可以编写优化的、功能齐全且有文档记录的代码,包括边缘案例、测试,甚至性能优化。 但首先... ...
    编程 发布于2024-11-08
  • React、Vue 和 Svelte 中的 JavaScript 框架 – 选择哪一个?
    React、Vue 和 Svelte 中的 JavaScript 框架 – 选择哪一个?
    JavaScript 框架在过去几年中取得了显着的发展,成为现代 Web 应用程序的支柱。 2024 年,React、Vue 和 Svelte 脱颖而出,成为最受欢迎的框架,每个框架都有其独特的优点和缺点。如果您正在构建新的 Web 应用程序,选择正确的框架对于项目的成功至关重要。 在本文中,我们将...
    编程 发布于2024-11-08
  • 提高 Spring Boot 应用程序的性能 - 第一部分
    提高 Spring Boot 应用程序的性能 - 第一部分
    启动Spring Boot应用程序时,我们通常使用启动器提供的默认设置,这对于大多数情况来说已经足够了。但是,如果我们需要性能,则可以进行具体调整,如本文第一部分所示。 将 Tomcat 替换为另一个 servlet 容器 应用程序web、RESTFul,使用Spring MVC,一...
    编程 发布于2024-11-08
  • 如何在 PHP 中高效合并关联数组并实现健壮的单元测试?
    如何在 PHP 中高效合并关联数组并实现健壮的单元测试?
    在 PHP 中合并关联数组:高效选项和单元测试策略简介组合关联数组是 PHP 编程中的常见任务。在本文中,我们将探讨将两个或多个关联数组合并为单个内聚数组的最佳实践。我们还将讨论有效的方法并提供详细的单元测试策略。array_merge 与 " " 运算符合并关联数组有两种主要方...
    编程 发布于2024-11-08
  • 抽象:一种程序化的思维方式
    抽象:一种程序化的思维方式
    “为什么程序员拒绝起床?他们陷入了太多的抽象层!” 在编程中,就像在生活中一样,我们经常需要简化复杂的事情以使它们更易于管理。想象一下,试图向从未见过计算机的人解释互联网,您不会从谈论服务器和协议开始。相反,你可以使用类比、故事或简化版本来传达这个想法。这就是编程中抽象的意义所在:简化复杂的事情。 ...
    编程 发布于2024-11-08
  • 您可以将内联脚本与 JavaScript 中的“src”属性结合起来吗?
    您可以将内联脚本与 JavaScript 中的“src”属性结合起来吗?
    JavaScript 中具有 SRC 属性的内联脚本在 JavaScript 中,通常使用 标签包含脚本,其中 src 属性指定外部脚本文件。然而,有时会想知道是否可以将内联脚本与 src 属性组合起来。规则官方行为受 HTML 4.01 规范管辖,该规范声明 src 属性优先于 标记的主体。这...
    编程 发布于2024-11-08
  • 不可变数据结构:ECMA 4 中的记录和元组
    不可变数据结构:ECMA 4 中的记录和元组
    不可变数据结构:ECMAScript 2024 中的新功能 ECMAScript 2024 引入了几个令人兴奋的更新,但对我来说最突出的一个功能是引入了不可变数据结构。这些新结构——记录和元组——改变了 JavaScript 中数据管理的游戏规则。它们提供了一种令人满意的方式来保持...
    编程 发布于2024-11-08
  • 如何在 PHP 中为注册用户自定义 URL?
    如何在 PHP 中为注册用户自定义 URL?
    在 PHP 中为注册用户设置自定义 URL对于电子商务平台来说,为每个用户提供唯一的 URL 对于展示他们的产品至关重要单独的产品。通过生成单独的网址(例如 www.seloncart.com/customername),您可以显示客户的特定产品。为此,请按照下列步骤操作:配置服务器路由: 修改服务...
    编程 发布于2024-11-08
  • 我如何用 Python 创建 QR 码生成器
    我如何用 Python 创建 QR 码生成器
    这将是一篇简短的文章,介绍我如何在 Python 中创建一个简单的二维码生成器 对于此步骤,您需要使用 qrcode 库:https://pypi.org/project/qrcode/ 创建项目文件夹后我所做的第一步就是创建一个虚拟环境。 Python 中的虚拟环境只是计算机上另一个独立的工作区,...
    编程 发布于2024-11-08
  • 如何在 PHP 中验证整数数据类型?
    如何在 PHP 中验证整数数据类型?
    验证 PHP 中的整数数据类型在 PHP 中处理数字数据时,确定变量是否表示整数至关重要。为了解决这个问题,通常使用 is_int() 函数。然而,它的行为有时可能是意想不到的,导致混乱。为了纠正这个问题,我们引入了验证整数数据类型的替代方法:FILTER_VALIDATE_INT使用该方法,可以高...
    编程 发布于2024-11-08
  • 为什么 DOMSubtreeModified 在 DOM Level 3 中被弃用以及替代方案是什么?
    为什么 DOMSubtreeModified 在 DOM Level 3 中被弃用以及替代方案是什么?
    在 DOM Level 3 中弃用 DOMSubtreeModified 事件DOMSubtreeModified 事件曾经是跟踪文档子树中更改的基本元素,现在已被在 DOM level 3 中已过时。了解这种弃用背后的基本原理并确定合适的替代方案至关重要。DOM Level 3 规范对 DOMSu...
    编程 发布于2024-11-08
  • 将 PDO 连接设置为 NULL 是否真正关闭连接并释放资源?
    将 PDO 连接设置为 NULL 是否真正关闭连接并释放资源?
    关闭PDO连接在PHP中,有两种流行的数据库连接接口:MySQLi和PDO。虽然两者的用途相似,但它们处理连接关闭的方式不同。MySQLi 需要显式关闭函数调用来释放连接:$this->connection->close();相反,PDO 使用空赋值来终止连接:$this->con...
    编程 发布于2024-11-08
  • 动态数据管理:了解 Vue.js 中的数据属性
    动态数据管理:了解 Vue.js 中的数据属性
    Vue.js 是用于开发现代 Web 应用程序的最流行的 JavaScript 框架之一。它提供了一种创建交互式动态应用程序的有效方法。在本文中,我们将深入研究 Vue.js 中的 data 属性,并探讨它的工作原理、为什么要使用它以及围绕它的最佳实践。 什么是数据属性? 在Vue....
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3