【问题标题】:eval - get name?eval - 得到名字?
【发布时间】:2011-05-20 15:56:55
【问题描述】:

是否可以为我使用 eval 执行的代码命名?

当浏览器加载一个文件并执行它,然后代码抛出异常时,浏览器可以告诉我异常发生在哪个文件的哪一行。

我希望它还可以告诉我evaled 代码发生异常的位置和位置。它应该会显示我给此代码的名称。

希望你明白我想要什么。

感谢您的帮助!

【问题讨论】:

  • 如果您发布一些代码,人们可能会帮助您找到一种方法来完成您需要做的事情,而无需使用“eval()”。那将是一个更好的结果:-)
  • 文章“为什么使用 eval() 是个坏主意”:) stackoverflow.com/questions/86513/… 以及不使用它的解决方法:go4expert.com/forums/showthread.php?t=13979
  • 相信我,没有 eval 是不可能的。这根本不是我要的。希望我能做点什么。
  • @FlashFan 好吧,没有设施可以满足您的要求。
  • @FlashFan:你能举个例子吗?我不确定你所说的“你给那个代码的名字”是什么意思。

标签: javascript eval


【解决方案1】:

在执行 eval 之前将您的名称分配给本地 var,然后将 eval 包装在 try/catch 中。在 catch 中,您将拥有名称和异常。

function evalCode(name, code) {
  try {
    eval(code);
  } catch (e) {
    console.log('Error in ' + name + ':');
    console.log(code);
    throw e;
  }
}

您无法让浏览器告诉您评估代码中的哪一行包含问题,因为代码被视为一个不同的单元,但您可以同时记录问题代码的名称和问题代码如上所述。

【讨论】:

  • 这是代码的一个想法,同步执行,但是代码是什么,存储在函数中并稍后调用(通过事件)没有办法捕获这些异常......
  • 无论您在何处存储代码字符串,您都可以存储名称。无论您在哪里调用 eval(),都可以将其包装在 try/catch 中。
  • 为更加清晰而编辑。如果这不能回答您的问题,您能否更具体地说明您正在尝试做什么并包含代码 sn-ps?
猜你喜欢
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 2017-07-11
相关资源
最近更新 更多