股权分配系统建设网站,网络推广营销公司,株洲发布,官网网站建设需求文档(function( window, undefined ) {// jquery code})(window);这是一个自调用匿名函数。什么东东呢#xff1f;在第一个括号内#xff0c;创建一个匿名函数#xff1b;第二个括号#xff0c;立即执行为什么要创建这样一个“自调用匿名函数”呢#xff1f;
通过定义一个匿名… (function( window, undefined ) {
// jquery code
})(window);
这是一个自调用匿名函数。什么东东呢在第一个括号内创建一个匿名函数第二个括号立即执行为什么要创建这样一个“自调用匿名函数”呢
通过定义一个匿名函数创建了一个“私有”的命名空间该命名空间的变量和方法不会破坏全局的命名空间。这点非常有用也是一个JS框架必须支持的功能jQuery被应用在成千上万的JavaScript程序中必须确保jQuery创建的变量不能和导入他的程序所使用的变量发生冲突。
匿名函数从语法上叫函数直接量JavaScript语法需要包围匿名函数的括号事实上自调用匿名函数有两种写法注意标红了的右括号 (function() { console.info( this ); console.info( arguments ); }( window ) ); (function() { console.info( this ); console.info( arguments ); })( window );
为什么要传入window呢
通过传入window变量使得window由全局变量变为局部变量当在jQuery代码块中访问window时不需要将作用域链回退到顶层作用域这样可以更快的访问window这还不是关键所在更重要的是将window作为参数传入可以在压缩代码时进行优化看看jquery-1.6.1.min.js (function(a,b){})(window); // window 被优化为 a
为什么要在在参数列表中增加undefined呢
在 自调用匿名函数 的作用域内确保undefined是真的未定义。因为undefined能够被重写赋予新的值。 undefined now its defined; alert( undefined );
浏览器测试结果 浏览器 测试结果 结论 ie now its defined 可以改变 firefox undefined 不能改变 chrome now its defined 可以改变 opera now its defined 可以改变
注意到源码最后的分号了吗
分号是可选的但省略分号并不是一个好的编程习惯为了更好的兼容性和健壮性请在每行代码后加上分号并养成习惯。
更多专业前端知识请上
【猿2048】www.mk2048.com