【发布时间】:2014-01-31 05:47:46
【问题描述】:
我有一个包装函数,我在其中使用变量 dataObject。我有一个动作可以触发包装函数中的一些外部函数。
function wrapper() {
var dataObject;
var jsonPath = "dataObject[0]['Set1'][0]['Attribute1']";
eval('outsideFunction(dataObject, jsonPath)');
}
function outsideFunction(dataObject, jsonPath) {
dataObject[0]['Set1'][0]['Attribute1'] = 'asde'; //This sets the value to dataObject in the wapper
var attrVal = '123';
eval("jsonPath = attrVal"); //This doesn't set value to dataObject in the wrapper but in the local dataObject
}
为什么直接赋值和使用eval赋值的动作有区别?
【问题讨论】:
-
-
eval(jsonPath + " = attrVal");怎么样? -
^^^^ 在您的代码中,您正在评估的是表达式
"dataObject[0]['Set1'][0]['Attribute1']" = '123',即您正在将一个字符串值分配给另一个字符串值,这是不可能的。但是,如果将jsonPath与另一个字符串连接,则结果将是表达式dataObject[0]['Set1'][0]['Attribute1'] = '123'。但是,请注意,这是非常糟糕的代码。看看这个问题吧:stackoverflow.com/q/13719593/218196
标签: javascript eval