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

时间:2021-05-25 17:06:33

标签: javascript

我想在这个例子中得到 "a, b" https://jsfiddle.net/8dw9e5k7/ 而不是我得到别的东西。可能吗?

    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();

1 个答案:

答案 0 :(得分:2)

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

不可能以干净的方式转储您自己的附加到 window 的变量(一些黑客仍然存在,包括使用 window 创建新的 iframe 并将其与当前window,如果您有兴趣,请查看此answer

现在,如果您希望 this 引用当前函数的词法作用域,情况并非如此,您根本无法以编程方式检索它。