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.