Eval 通常不受欢迎,但似乎有必要。
目前,我有一个 ajax 调用,它检索具有内联 javascript 的 html 文件。然后它通过标记名获取脚本并对其进行评估。
这一切都工作正常,但我不知道所有的变量去了哪里。
例如,在正常情况下,所有内容都可以在窗口中找到:
var you = "buddy"
alert(window["you"]);
//Alerts : "buddy"
但是当我进行评估时,我不知道“窗口”的等价物是什么。我不确定所有变量最终去了哪里。
我想要的是某种方法来获取所有这些变量的列表,而不需要它们中的任何一个覆盖全局范围内存在的变量。
最佳答案
eval
将共享全局上下文 (window
) 和任何局部变量。如果在全局范围内执行:
eval('var a=1; b=2');
console.log(window.a, window.b);
// => 1 2
new Function
将创建一个新的本地作用域:
new Function('var c=7; d=4')()
console.log(window.c, window.d);
// => undefined 4
您可以枚举全局范围内的任何变量作为window
(或global
)的属性。您不能以任何方式枚举局部变量。
关于javascript - 获取 "window"对象进行评估,并列出所有变量? Javascript 评估内联 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35423964/