Home > Enterprise >  JQuery 3.3.1 attr with 3 parameters. What it does?
JQuery 3.3.1 attr with 3 parameters. What it does?

Time:10-07

I'm trying to update some old code someone left before, at some point, it made a call to the attr function of an old 3.3.1 JQuery like this:

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

My problem is than I want to know what exactly this does (I already know what attr does when it has 2 parameters, but not 3) before adapt it to a newer version, but when I search about the .attr function in JQuery, all I found is with only two parameters, not 3 like this, I don't know if is properly a callback function (unlikely, because none of the parameters this function accepts is a callback function), or other thing.

The JQuery file is the one served by googleapis, so is not likely it has been specially modified for this.

Please, can someone explain me what it does?

CodePudding user response:

No signature of attr() accepts 3 arguments. The last argument is redundant. Even if it did serve a purpose, putting a window.unload event handler in there would not do anything useful.

Regards your comment under the question:

Why doesn't it launch a fatal error for the number of arguments?

It's because JS is a very permissive language. You can pass as many arguments to a function as you like, JS will ignore any extras and only bind those which you defined in the function definition (up to 2 in this case using attr()). Although note that it's still possible to retrieve all arguments that were used in the function invocation using the arguments keyword

  • Related