如何在javascript函数中获取变量名称

如何在javascript函数中获取变量名称,javascript,Javascript,在这个例子中,我想得到“a,b”,而不是其他的。可能吗 function test() { a = 5; b = 10; try { var variables = "" for (var name in this) variables += name + "\n"; alert(variables);

在这个例子中,我想得到“a,b”,而不是其他的。可能吗

    function test() {

        a = 5;
        b = 10;
        try {
          var variables = ""
          for (var name in this)
          variables += name + "\n";
          alert(variables);
        } catch(e) {
          alert(e.message)
        }
        
    }

    test();

在函数中分配不存在的变量会使变量成为全局变量,这意味着附加到
窗口
对象。这就是为什么您的代码在某种程度上起作用,并显示变量以及许多其他内容,因为
指的是
窗口

以干净的方式转储附加到
窗口的您自己的变量是不可能的(一些黑客仍然存在,包括使用
iframe
创建一个新的
窗口
,并将其与当前的
窗口
进行比较,如果您感兴趣,请检查此项)


现在,如果您希望
引用当前函数的词法范围,则情况并非如此,您根本无法通过编程方式检索它。

在函数中分配不存在的变量会使变量全局,这意味着附加到
窗口
对象。这就是为什么您的代码在某种程度上起作用,并显示变量以及许多其他内容,因为
指的是
窗口

以干净的方式转储附加到
窗口的您自己的变量是不可能的(一些黑客仍然存在,包括使用
iframe
创建一个新的
窗口
,并将其与当前的
窗口
进行比较,如果您感兴趣,请检查此项)


现在,如果您希望
这个
引用当前函数的词法范围,则情况并非如此,您根本无法通过编程方式检索它。

如果不将函数作为字符串并对其进行解析,则无法获取实际函数的已用变量。顺便说一句,为什么要对全局变量使用
this
?如果有必要,可以将变量放入函数的对象中。如果不将函数作为字符串并对其进行解析,则无法获取实际函数的已用变量。顺便说一句,为什么要对全局变量使用
this
?如果需要,可以将变量放入函数的对象中