如何获得 JavaScript 变量?

How to get a JavaScript variable?

从包含(或引用)我的 JavaScript 的页面我向外部网站发出 AJAX XHR 请求。

我们 GET 上的外部网站 return 请求一个 JavaScript 文件,如下所示:

var __xxx = {
    // ....
};

如何在我的 JavaScript 中获取变量 __xxx 的值?

目前,我发明的唯一方法是使用正则表达式删除 var __xxx 并使用 JSON 解析器解析其余部分。有没有更好的方法?

如有必要,外部网站可能被认为是可信的,但我宁愿不信任来自它的数据(使用一些安全的解析器,如 JSON)。

我相信你最好的选择是做你目前正在做的事情(解析字符串 Javascript 和 JSON.parse 它)或者对传入的 eval 使用方法 Javascript 字符串.

我个人建议解析字符串,但这取决于您从该端点返回的Javascript。 Eval 几乎可以肯定在任何一种情况下都有效,但可能很危险

使用字符串和 Function 构造函数创建一个新函数。添加 'return _xxx;' 并将结果分配给可在当前脚本中访问的新变量。

var returned_data = new Function(data + " return _xxx;")()

eval 相比, 更可取,因为函数的执行将不允许访问函数作用域外的局部变量。