javascript - What is the purpose of passing-in undefined? -


i have noticed jquery , related keynote plugins jquery.ui pass undefined parameter anonymous functions used in module definitions, so:

(function($, undefined) { ... })(jquery); 

alternatively, have noticed other plugins recommended jquery and/or others not pass undefined in parameter.

this silly question, but...

shouldn't available anyway? why pass in? there sort of other purpose or trick going on here?

there 2 reasons that:

1) if undefined variable in function scope rather global object property, minifiers can reduce single letter achieving better compression rate.

2) before es5*, undefined property of global object without write-protection. overwritten, resulting in strange , unexpected behavior. this:

var test = 123; undefined = 123; if (test === undefined){    // true, since undefined equals 123 } 

by having function argument undefined (the name not matter) don't pass parameter to, make sure have variable undefined can test "undefinedness" against variable.

btw. safest method test undefined is: typeof ( var ) === 'undefined'

(*) ecmascript 5, global properties undefined, nan , infinity became readonly. general adoption in modern browsers - of course exception of ie 9 - overwriting values not possible anymore.


Comments

Popular posts from this blog

jasper reports - Fixed header in Excel using JasperReports -

media player - Android: mediaplayer went away with unhandled events -

python - ('The SQL contains 0 parameter markers, but 50 parameters were supplied', 'HY000') or TypeError: 'tuple' object is not callable -