javascript eval方法

问题描述 投票:1回答:4

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

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

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

javascript debugging eval lazy-evaluation
4个回答
1
投票

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


1
投票

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


1
投票

有可能的。你必须将SourceMap与源代码一起使用。看看source map,它有关于这种技术的广泛信息。


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

© www.soinside.com 2019 - 2024. All rights reserved.