2014-05-17 136 views
0

我看到很多带有函数的命名空间示例,但它是否为o.k.以这种方式声明变量(全局到我的程序)?命名空间变量 - javascript

var mynamespace = {}; mynamespace.var1 = 5;

或者应该将所有变量放在名称空间内的函数中?

+0

这要看是什么,如果有的话,你认为可以接受的在全局命名空间 –

+0

也许这帮助:http://stackoverflow.com/q/8862665/218196 –

回答

0

您应该避免全局变量... 改用某种模块模式,例如

(function() { 
    "use strict"; 
    var myVar = 'blob'; 
}()); 

http://yuiblog.com/blog/2007/06/12/module-pattern/

编辑:

更多的澄清:

var NS1 = NS1 || {}; 
NS1.myModule = function() { 
     "use strict"; 
     var myVar = 'blob'; 
     return { 
      myPublicMethod: function() { 
       return myVar; 
      } 
     }; 

}(); 
+0

那么什么是“严格使用”?那是我选择的命名空间名称吗?这是否创建没有任何其他代码的名称空间?我去了博客,但没有使用,因为我没有使用雅虎我仍然有点困惑。你是说上面的函数没有var myNS =(函数...,它是在代码中显示的? – agent86

+0

“使用strict”与模块模式或全局变量无关,但我添加它,因为它是好的它告诉浏览器只使用javascript的“好的部分”。 http://www.yuiblog.com/blog/2010/12/14/strict-mode-is-coming-to-town/ – MonkeyVoodoo

+0

'用户严格'是一个JavaScript浏览器指令,它告诉浏览器不允许使用错误的js并进行一些其他类型的优化 –