0

例如,我有一个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" ) );
4

4 回答 4

2

您可以使用with关键字,但请不要。不推荐使用with和。eval

var z = { a:1, b:10, c:43 };
with(z) {
    console.log(eval('a+b'));
}

这是有关 MDN 的更多信息

于 2013-10-05T00:22:41.833 回答
1

看一下这个:

function expression (expr) {
    return new Function('obj', 'with (obj) return ' + expr);
}

console.log(expression('(a+b-5)*c')({ a:1, b:10, c:43 }));
于 2013-10-05T00:11:48.383 回答
0

不要使用评估! 使用 JSON.parse

JSON.parse

JSON.parse 与 eval()

var obj=JSON.parse(json);

alert((obj.a+obj.b-5)*obj.c)
于 2013-10-05T00:13:54.753 回答
0

我猜你想要类似的东西:

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.
于 2013-10-05T00:16:57.457 回答