Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何查找javascript中使用的全局变量_Javascript - Fatal编程技术网

如何查找javascript中使用的全局变量

如何查找javascript中使用的全局变量,javascript,Javascript,可能重复: 我的应用程序在javascript中使用全局变量。有没有办法找到他们中有多少人 谢谢 Om使用过梁会在引入全局时警告您。您还可以在代码运行之前和之后比较窗口的项目 像这样迭代窗口元素: for(var globe in window){ console.log(globe); } 我做了一个 var GlobalTester = (function(){ var fields = {}; var before = function(w){ for

可能重复:

我的应用程序在javascript中使用全局变量。有没有办法找到他们中有多少人

谢谢
Om

使用过梁会在引入全局时警告您。您还可以在代码运行之前和之后比较
窗口的项目

像这样迭代窗口元素:

for(var globe in window){
 console.log(globe);
}
我做了一个

var GlobalTester = (function(){
    var fields = {};
    var before = function(w){
        for(var field in w){
            fields[field] = true;
        };
    };

    var after = function(w){
        for(var field in w){
            if(!fields[field]){
                 console.log(field + " has been added");
            }            
        };

    };
    return {before: before, after:after};
}());

GlobalTester.before(window);

// Run your code here        
window.blar = "sdfg";      

GlobalTester.after(window);        
​
​

这将输出
blar已添加到控制台中

在浏览器开发者窗口(F12)中尝试此操作:


检查窗口对象,但在执行此操作之前,您需要知道所有全局变量名,下面是一个示例:

var myGlobalVars = {"global1":0, "global2":0};

function countGlobals() {
    var count = 0;
    for (myGlobalVar in myGlobalVars) {
        if (myGlobalVar in window) {
            count++;
        }
    }

    return count;
}

countGlobals();

最简单的方法是检查
窗口
对象。出于好奇,为什么要设置全局变量?我正试图想出一个必要的例子,但我想不出一个。@Thomas:当我们最初设计应用程序时,我们使用了它,现在我正试图将其删除并使其本地化。@Ohm-你能澄清一下吗。。。您想获取所有全局变量的列表,还是仅获取您正在创建的变量的列表?我把这个问题理解为“我如何判断哪些全局变量是我的,这样我就可以摆脱它们”,在这种情况下,我认为mods过早地关闭了这个问题。+1因为这将返回此窗口的所有属性的计数,而不仅仅是OP感兴趣的属性。关闭,所以我无法回答;另外,如果您添加的任何全局变量可能不可枚举,请查看使用。啊-不用担心。我可能误解了这个问题。我以为他想知道有多少全局变量。不知道他的代码使用了多少。考虑到这一点,我理解您的担忧,因为您可以只计算globalVars变量中的属性数。但正如我解释的这个问题,属性可能存在也可能不存在,所以这个答案是合理的。如果OP知道其所有全局变量的名称,为什么他们会问这个问题?如果全局变量在运行时的某个未知点分配,但变量的名称在“编译”时已知。
var myGlobalVars = {"global1":0, "global2":0};

function countGlobals() {
    var count = 0;
    for (myGlobalVar in myGlobalVars) {
        if (myGlobalVar in window) {
            count++;
        }
    }

    return count;
}

countGlobals();