(function (window, undefined) { var document = window.document; }(window, undefined))
将来代码压缩的时候,可以吧 function (window) 压缩成 function (w)
在将来会看到别人写的代码中会把undefined作为函数的参数(当前案例没有使用)
因为在有的老版本的浏览器中 undefined可以被重新赋值,防止undefined 被重新赋值
现在的代码结构清晰,谁出问题就找到对应的js文件即可。
通过自调用函数,已经防止了变量命名污染的问题
但是,由于js文件数较多,需要在页面上引用,会产生文件依赖的问题(先引入那个js,再引入哪个js)
将来通过工具把js文件合并并压缩。现在手工合并js文件演示
// 如果存在多个自调用函数要用分号分割,否则语法错误 // 下面代码会报错 (function () { }()) (function () { }()) // 所以代码规范中会建议在自调用函数之前加上分号 // 下面代码没有问题 ;(function () { }()) ;(function () { }())
// 当自调用函数 前面有函数声明时,会把自调用函数作为参数 // 所以建议自调用函数前,加上; var a = function () { alert('11'); } (function () { alert('22'); }())