当前位置:嗨网首页>书籍在线阅读

22-讨论

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

12.5.3 讨论

将你发布的代码包装在一个匿名函数中非常简单直接,这一步骤添加了多个特性,确保插件代码能够更好地运行于用户所在的更加广阔的世界里。

在函数定义的开始添加一个分号有助于避免其他开发人员在他们的程序库中忘记包含最后的分号。JavaScript语言默认用换行符打断语句,但是许多用户用精简工具将项目中的整组JavaScript压缩为单个文件。这一过程删除了行结束符,可能导致紧接着的代码出错。添加初始的分号是防止这种情况的简单技巧。

左圆括号之后就是匿名函数的定义。在匿名函数中,定义一个函数,该函数传递一个用来代替全名jQuery对象的变量。在这种情况下,将$当作一个变量使用。定义附加函数是必需的,这是因为JavaScript对作用域的处理方式。在Java和C++等更传统的语言中,作用域限制在块语句中。在JavaScript中,作用域包装在函数中。因此,这里使用函数实际上是为了建立一个作用域边界,以便在这个边界内定义插件。

接下来是插件的新版本,唯一的改动是jQuery对象的使用方式。因为匿名地包装这一插件,并限制了$变量的作用域,所以现在可以自由地使用 $ 而不会与任何其他代码冲突。

最后一行将作用域函数和匿名函数分别包装在右方括号和右圆括号中,并在匿名函数定义之后立即调用它。这是告诉函数传入jQuery对象的地方,该对象在函数中重命名为 $ 。最后,用分号结束新语句,避开JavaScript精简和压缩工具导致的错误。

$ 快捷方式在编写JavaScript代码时很有用。它减小了代码尺寸,促进了好的代码设计,从而变得极端流行并为人熟知。因此,许多程序库使用了 $ 快捷方式,将其纳入自己的上下文。由于每种程序库都支持自己的 $ 快捷方式版本,很容易发生冲突。通过将插件代码包装在一个匿名函数中,可以确保插件保持 $ 快捷方式周围代码的作用域级别,减少和其他JavaScript程序库冲突的可能性。

前面已经说明过,在匿名函数中包装插件有一个副作用,就是创建闭包。在JavaScript中利用闭包有助于为需要定义的方法或者变量提供正确的命名空间,进一步减少了变量或者函数名称与其他代码冲突的几率。