不使用 eval 计算对象表达式
Evaluate object expressions without using eval
如何在不使用 eval 的情况下评估 js 对象表达式。例如
'd3.scale.category10().domain(d3.range(m))'
'd3.range(n).map(function() {//body})'
我想得到像
这样的输出
var a = d3.scale.category10().domain(d3.range(m));
您可以创建一个 <script>
元素并将字符串设置为 textContent
,然后将脚本元素附加到文档中
var command = 'console.log("test")';
var s = document.createElement("script");
s.textContent = command;
document.head.appendChild(s);
您也可以将字符串传递给 Function()
,这将创建一个以该字符串作为函数主体的函数,然后执行返回的函数。
var body = 'console.log("test")';
var testFn = Function(body);
testFn();
在您的特定情况下,如果 var a =
不存在,您必须将其添加到字符串之前。如果您使用 Function()
方式,您还必须在该函数中使用该变量,因为 var
将使其仅限于该函数。
如何在不使用 eval 的情况下评估 js 对象表达式。例如
'd3.scale.category10().domain(d3.range(m))'
'd3.range(n).map(function() {//body})'
我想得到像
这样的输出var a = d3.scale.category10().domain(d3.range(m));
您可以创建一个 <script>
元素并将字符串设置为 textContent
,然后将脚本元素附加到文档中
var command = 'console.log("test")';
var s = document.createElement("script");
s.textContent = command;
document.head.appendChild(s);
您也可以将字符串传递给 Function()
,这将创建一个以该字符串作为函数主体的函数,然后执行返回的函数。
var body = 'console.log("test")';
var testFn = Function(body);
testFn();
在您的特定情况下,如果 var a =
不存在,您必须将其添加到字符串之前。如果您使用 Function()
方式,您还必须在该函数中使用该变量,因为 var
将使其仅限于该函数。