javascript eval方法

时间:2011-07-13 18:53:32

标签: javascript debugging eval lazy-evaluation

如何在javascript eval()方法中观察变量值?是否有可能在eval方法中“步入”和“跨越”?例如,使用如下代码:

eval("if (true) { var a = 10; a += 20; alert(a); }");

我对IE9中的调试更感兴趣,但我也想听听一般原则。

4 个答案:

答案 0 :(得分:1)

如果变量不存在,你怎么知道它的价值? - 没门。并且... eval === evil。

答案 1 :(得分:1)

你不能在eval方法里面。你给它的代码不是代码而是字符串。在eval()之后,它变成代码,你可以检查它。这还取决于您用于调试脚本的工具。在Chrome中,如果单击“暂停”,则执行您的eval。它会中断(因为b是未定义的)并跳过评估的代码,你可以在其中跳出,进出。您还可以使用new Function("code goes here")()来评估代码

答案 2 :(得分:1)

有可能。你必须将SourceMap与源代码一起使用。 请查看source map,其中包含有关此技术的广泛信息。

答案 3 :(得分:0)

虽然没有完整记录或建议,但您可以观看本地变量。

var reference;

function alerta(){
  alert(reference[0]);
}

// Desired to be watched must be called as function arguments
(function(a){
  reference = arguments;

  a = 'taco';
  alerta();
  a = 'updatedValue';
  alerta();

})()

http://jsbin.com/oragan