Javascript: undefined as a function parameter
This is used to prevent from overriding the value of undefined
in non-strict mode.
In non-strict mode, the value of undefined
can be override by assigning other value to it.
undefined = true; // Or any other value
So, using the value of undefined
will not work as expected.
In strict-mode, undefined
is read-only and assigning value to it will throw error.
In the code, the value to the last parameter is not passed, so it'll be implicitly passed as undefined
.
var Subject = ( function( window, undefined ) {
}(window)); // <-- No parameter is passed for the last value
That is done to make sure that undefined always is undefined. In JavaScript, since undefined isn't a reserved word but a regular variable, this would be allowed for instance:
undefined = 2; // Assign a different value to undefined
if (undefined == 2) // Now this statement would be true
So in your case
var Subject = ( function( window, undefined ) {
They pass in window and use it , but then they don't pass a second value to the undefined parameter, thus undefined will be undefined.