JS中定义函数时的参数定义为undefined

看到大牛们写的js源码,想拜读学习一下。
[code="java"]var KISSY = (function (undefined) {

var host = this,
    S,
    guid = 0,
    EMPTY = '';

S = {
    __BUILD_TIME: '20130701201313',
    ...
};

// exports for nodejs
if (S.Env.nodejs) {
    S.KISSY = S;
    module.exports = S;
}

return S;

})();[/code]

请看以上的代码,为什么在定义匿名函数的时候要加上undefined的参数定义呢? 在我看来该匿名函数执行的时候也没有传任何参数给它,这个的undefined定义是有啥特殊含义吗?谁知道的话能解释一下吗,最好给点例子什么的。

在 自调用匿名函数 的作用域内,确保undefined是真的未定义。因为undefined能够被重写,赋予新的值。
undefined = "now it's defined";
alert( undefined );
ie now it's defined 可以改变
firefox undefined 不能改变
chrome now it's defined 可以改变
opera now it's defined 可以改变