function appInit () {
//程序初始化操作} function appModule1 () { //程序功能模块1 } function appModule2 () { //程序功能模块2 } function appModule3 () { //程序功能模块3 } $( document ).ready(appInit )
从技术角度看,这种代码方式并没有任何错误,但是通过下图可以发现这些函数都是建立在全局名称空间下

若在全局名称空间中创建很多变量很快会导致严重的问题、比如在全局名称空间中定义了名为i、_或$的变量。
如何改善呢?
1、使用一个单例创建一个应用程序名称空间
var myApp = { init : function () { //程序初始化操作 }, appModule1 : function () { //程序功能模块1 }, appModule2 : function () { //程序功能模块2 }, appModule3 : function () { //程序功能模块3 } } $( document ).ready(myApp.init)
对于上面的新结构,打开chrome查看window下的属性时仅看到单个变量myApp,这中方式极大的降低了变量名冲突的可能性。

这一模式允许多个开发人员跨越多个文件,在单个应用程序名称空间之下进行协同开发。从代码结构角度来说,可以将网站的每一部分拆成独立文件。比如本例中的common.js、
appModule1.js、appModule2.js和appModule3.js。每个开发人员都有一个自己负责的网站部分和相应的javascript文件,开发人员只需要关注自己的文件,不需要担心会发生冲突。
common.js var myApp = { common : { init : function () { //初始化应用程序通用代码 } } } appModule1.js myApp.appModule1 = { init : function

