function (window, $, undefined) { play=function(){ $("#demo").val("This is a demo."); } window.wbLogin = play; })(window, jQuery); 像上边这样的代码为什么要把window, jQuery对象传进去? 为什么要传入 jQuery? 通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这点非常有用也是一个 JS 框架必须支持的功能,jQuery 被应用在成千上万的 JavaScript 程序中,必须确保 jQu JavaScript中的自执行函数是一种常见的编程技巧,用于创建独立的、封闭的作用域,避免全局变量污染。自执行函数的格式通常是`(function(args) { ... })(params)`,它会立即执行括号内的函数,并传递`params`作为参数。在给定的例子中,函数接收`window`,`jQuery`和`undefined`三个参数。 我们来看为什么需要传入`window`。在JavaScript中,`window`是全局对象,所有全局变量和函数本质上都是`window`对象的属性。当在函数内部直接使用`window`时,JavaScript会查找作用域链,直到找到全局作用域。然而,通过将`window`作为参数传递,我们可以将全局对象本地化,减少查找过程,提高访问速度。同时,当代码经过压缩时,如例子中所示的`jquery-1.6.1.min.js`,`window`可以被替换为更短的变量名,进一步优化了代码体积。 传入`jQuery`通常是为了确保在函数内部使用的是正确的`jQuery`实例,特别是在存在多个库或框架使用`$`作为别名的情况下。通过将`jQuery`对象作为参数,我们可以避免与可能存在的其他库冲突,保证`$`在函数内部代表的是预期的jQuery库。 再者,传入`undefined`的主要原因是保护其原始状态。在JavaScript中,`undefined`是一个可赋值的变量,虽然通常保留为未定义的值,但开发者可能会无意中改变它的值。这样做确保在函数内部,`undefined`始终表示真正的“未定义”,这对于检查变量是否已定义的条件语句至关重要。例如,`if (variable === undefined)`将准确地检测`variable`是否从未被赋值。 通过这些方式,自执行函数提供了一种机制来创建私有作用域,避免全局变量冲突,提高代码执行效率,并确保变量的准确性和一致性。在开发大型应用程序和库时,这种模式尤其重要,因为它有助于保持代码的整洁和模块化,同时也提高了性能。因此,了解并熟练运用自执行函数是每个JavaScript开发者必备的技能之一。
- 粉丝: 1
- 资源: 936
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0