在一个函数块里面的源文件

浏览器的Javascript有一对作用域:函数域全局域。如果一个变量不在函数里面,它就是全局的。在JavaScript里面,全局变量容易产生很多麻烦,这是一个保持库变量只归于自身的构想。

在一个函数里面定义的参数和变量,外面是不可见的。,并且一个定义在函数里面的变量,在这个函数里面的任何地方都是可见的。这样封装在函数里面的代码,其他的库就不能干涉了。这类似于编译语言的命名空间。它使得这个文件内容封闭起来,成为一个私有命名空间,避免了不同的javascript库和模块之间名字冲突。这样,如果你定义一个"print()"函数,也不会和其他文件里面的"print()"函数相互冲突。

主要目的:

  • 避免和其他方法/库(methods/libraries)的冲突.
  • 规避全局域,局部可见.
  • 调试更快 (局部域).
  • 避免覆盖已经存在的变量.
  • 对一个全局变量利用易引用的别名.
原文链接