首页 > web前端 > js教程 > 为什么 `setTimeout(alertMsg, 3000)` 优于 `setTimeout('alertMsg()', 3000)`?

为什么 `setTimeout(alertMsg, 3000)` 优于 `setTimeout('alertMsg()', 3000)`?

Linda Hamilton
发布: 2024-11-22 08:39:14
原创
975 人浏览过

Why is `setTimeout(alertMsg, 3000)` preferred over `setTimeout(

使用带引号和括号的 setTimeout 的区别

使用 setTimeout 时,可以不带引号或括号直接调用函数,也可以将函数名用引号括起来带括号。细分如下:

带括号:

setTimeout("alertMsg()", 3000);
登录后复制

在这种情况下,“alertMsg()”被视为字符串,setTimeout 将执行该字符串一个脚本。 不推荐,因为它可能会导致意外行为。

不带引号和括号:

setTimeout(alertMsg, 3000);
登录后复制

这是首选方式将函数引用传递给 setTimeout。它直接传递alertMsg,假设它是一个函数。

仅包含引号:

setTimeout("alertMsg", 3000);
登录后复制

这是上一个示例的别名,但它是 不推荐。这意味着您正在向 setTimeout 传递一个字符串,这可能会产生误导。

setTimeout 的其他注意事项

  • 传递函数引用:始终传递函数引用或匿名函数作为 setTimeout 的第一个参数。
  • 传递参数: 要将参数传递给函数,请使用回调或跨浏览器兼容性较差的方法,将它们作为 setTimeout 的参数。
  • 回调上下文: 默认情况下,回调的上下文是全局对象窗口。您可以使用bind更改它。
  • 安全性:避免将字符串传递给setTimeout,因为它可以执行任意脚本。

以上是为什么 `setTimeout(alertMsg, 3000)` 优于 `setTimeout('alertMsg()', 3000)`?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板