Javascript 为什么要将全局声明变量的值设置为它';窗口对象中的值是否相同?

Javascript 为什么要将全局声明变量的值设置为它';窗口对象中的值是否相同?,javascript,publish-subscribe,Javascript,Publish Subscribe,委员会: (功能(窗口){ ps={}, ps=window.ps, ps.subscriptions=[], ps.subscribe=函数(名称、回调){ push({“name”:name,“callback”:callback}); 返回[名称,回调]; }, ps.unsubscribe=函数(args){ 对于(x=0;x 0){ 对于(var x=0;x,这是错误的代码。更好的方法是: (function(window){ var ps = window.ps || {},

委员会:

(功能(窗口){
ps={},
ps=window.ps,
ps.subscriptions=[],
ps.subscribe=函数(名称、回调){
push({“name”:name,“callback”:callback});
返回[名称,回调];
},
ps.unsubscribe=函数(args){
对于(x=0;x 0){

对于(var x=0;x,这是错误的代码。更好的方法是:

(function(window){
    var ps = window.ps || {},
    ps.subscriptions = [],
    // ...

    window.ps = ps;
})(this);
为了更好的衡量,我要补充一点

"use strict"; // turn on "strict" mode 

开始时也是如此。

该代码在开始时缺少一个
var
关键字。它会在“严格”模式下抛出一个错误。@Pointy好的,很好。当我看到变量的声明方式并开始思考“什么是…”时,我并不疯狂是的,懒惰的隐式globals是一种不好的做法,它会导致各种令人讨厌的bug。
"use strict"; // turn on "strict" mode