例如,我有一个json
形式{ a:1, b:10, c:43 }
。
我希望执行eval( "(a+b-5)*c" )
但将其应用于json
,而不是json
和 公式所在的地方。
尝试过这个,试图利用范围,但找不到a
.
var z = { a:1, b:10, c:43, eval:eval };
console.log( z.eval( "a+b" ) );
例如,我有一个json
形式{ a:1, b:10, c:43 }
。
我希望执行eval( "(a+b-5)*c" )
但将其应用于json
,而不是json
和 公式所在的地方。
尝试过这个,试图利用范围,但找不到a
.
var z = { a:1, b:10, c:43, eval:eval };
console.log( z.eval( "a+b" ) );
您可以使用with
关键字,但请不要。不推荐使用with
和。eval
var z = { a:1, b:10, c:43 };
with(z) {
console.log(eval('a+b'));
}
这是有关 MDN 的更多信息。
看一下这个:
function expression (expr) {
return new Function('obj', 'with (obj) return ' + expr);
}
console.log(expression('(a+b-5)*c')({ a:1, b:10, c:43 }));
不要使用评估! 使用 JSON.parse
var obj=JSON.parse(json);
alert((obj.a+obj.b-5)*obj.c)
我猜你想要类似的东西:
var yourJSon = '{ "a":1, "b":10, "c":43 }';
//Your original JSon String (attention to the standard double quotes)
yourJSon = JSON.parse(yourJSon);
//this will render your JSon string into a "real" object
var answer = eval("(yourJSon.a + yourJSon.b - 5) * yourJSon.c");
//And now you can do the eval, using the object's variable to define the scope of that object.