【问题标题】:Will Javascript read returned string as script or treat it as a string?Javascript 会将返回的字符串作为脚本读取还是将其视为字符串?
【发布时间】:2015-06-19 15:21:40
【问题描述】:

我想知道是否可以运行一个函数来输出 javascript 可以读取并识别为变量而不是字符串的行?我已经提取了 JSON 数据,我想要做的是获取对象数据并动态地从中动态写出变量。我希望这是可能的..

function createVar(data){
   return "var_" + data.name + data.id + "=_" + data.desc;
   //This will return the line :
   var itemModel1 = "I no longer vote";
}

【问题讨论】:

  • 您始终可以对函数返回的任何内容调用 eval()。但根据“数据”的来源,这可能被认为是危险的。
  • 谢谢。我会在早上尝试第一件事!

标签: json string object


【解决方案1】:

我不得不说我真的不推荐这个,但它确实有效。

function createVar(data){
   return "var " + data.name + data.id + "='" + data.desc + "'";
}

var exampleData = {name:"itemModel", id:"1", desc:"Today we went to the mall"}

eval(createVar(exampleData));

console.log(itemModel1); //outputs "Today we went to the mall" to the console

我会澄清说,如果您确实需要动态生成变量名,这将解决问题。但我会更仔细地检查您的代码,看看是否有另一种方法来完成您正在尝试做的事情。与往常一样,您必须非常小心 eval,如果用户输入作为您的数据参数传递,则可能会发生不好的事情。

【讨论】:

  • 如果您不推荐它,为什么要发布它?你有什么推荐的?
  • 我刚刚用有效的结果回答了他的问题。如果没有更多代码,很难推荐任何更好的东西。一个起点是询问是否以及为什么需要动态生成变量名。
  • @FoxMulder900 - 因为我正在做的是提取 json 数据,然后希望从中构造模型实例以用于骨干网。
  • @Toshi - 我明白了,为什么不能直接从 json 创建模型实例?我不熟悉骨干网,但我想您可以将数据直接传递到模型构造函数中。
  • @torazaburo - 但是如果变量是通过调用这个返回的函数定义的,它会在创建后立即超出范围,使其无法访问。除非我误解了你的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 2013-10-01
  • 1970-01-01
相关资源
最近更新 更多