如何在javascript函数中获取变量名称
在这个例子中,我想得到“a,b”,而不是其他的。可能吗如何在javascript函数中获取变量名称,javascript,Javascript,在这个例子中,我想得到“a,b”,而不是其他的。可能吗 function test() { a = 5; b = 10; try { var variables = "" for (var name in this) variables += name + "\n"; alert(variables);
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
?如果需要,可以将变量放入函数的对象中