【问题标题】:JQuery 3.3.1 attr with 3 parameters. What it does?带有 3 个参数的 JQuery 3.3.1 attr。它能做什么?
【发布时间】:2021-11-26 09:53:39
【问题描述】:

我正在尝试更新某人之前留下的一些旧代码,在某个时候,它调用了旧的 3.3.1 JQuery 的 attr 函数,如下所示:

$("#myiframe").attr("src", url, function () {
        $(window).on("unload", function () {
            // Some function stuff
        });
});

我的问题是,我想知道它到底是做什么的(我已经知道 attr 在它有 2 个参数时会做什么,但不是 3 个),然后再将其调整为较新的版本,但是当我搜索 .attr 函数时JQuery,我发现只有两个参数,而不是像这样的3个,我不知道是否正确的回调函数(不太可能,因为这个函数接受的参数都不是回调函数),或者其他的东西。

JQuery 文件是由 googleapis 提供的,因此不太可能为此专门修改。

拜托,谁能解释一下它的作用?

【问题讨论】:

  • 没有attr() 的签名接受 3 个参数。最后一个论点是多余的。即使它确实有目的,在其中放置一个 window.unload 事件处理程序也不会做任何有用的事情。
  • @RoryMcCrossan 那么为什么它不会针对参数数量启动致命错误?
  • 因为 JS 在很多方面没有那么严格。
  • @RoryMcCrossan 所以我有了这个功能,我可以尝试用核武器来毁灭世界,这将是无用的,什么也不做。我是对的?
  • 正确。您可以将任意数量的参数传递给函数,JS 将忽略任何额外的,并且只绑定您在函数定义中定义的那些(在本例中为 2)。尽管请注意,仍然可以使用 arguments 关键字检索函数调用中使用的所有参数:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

标签: javascript jquery attr


【解决方案1】:

attr() 的签名不接受 3 个参数。最后一个论点是多余的。即使它确实有目的,在其中放置一个window.unload 事件处理程序也不会做任何有用的事情。

关于您在问题下的评论:

为什么它不会针对参数数量引发致命错误?

这是因为 JS 是一种非常宽松的语言。您可以将任意数量的参数传递给一个函数,JS 将忽略任何额外的,并且只绑定您在函数定义中定义的那些(在这种情况下使用 attr() 最多 2 个)。尽管请注意,仍然可以使用 arguments 关键字检索函数调用中使用的所有参数

【讨论】:

    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 2011-12-07
    相关资源
    最近更新 更多