javascript eval метод - PullRequest
       21

javascript eval метод

1 голос
/ 13 июля 2011

Как посмотреть значения переменных внутри метода javascript eval ()? И возможно ли «шагнуть» и «перешагнуть» в методе eval? Например, с таким кодом:

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

Меня больше интересует отладка в IE9, но мне также хотелось бы услышать общий принцип.

Ответы [ 4 ]

1 голос
/ 05 апреля 2013

Это возможно. Вы должны использовать SourceMap с вашим исходным кодом. Взгляните на карту источника , которая содержит обширную информацию об этой технике.

1 голос
/ 14 июля 2011

вы не можете внутри метода eval.код, который вы даете, это не код, а строка.после eval () он становится кодом, и вы можете проверить его.Это также зависит от того, какие инструменты вы используете для отладки вашего скрипта.В Chrome, если вы нажмете «Приостановить исключение» и выполните команду eval.он сломается (потому что b не определено) и перейдет в вычисленный код, где вы можете перешагивать, входить и выходить.Вы также можете использовать new Function("code goes here")() для оценки кода

1 голос
/ 13 июля 2011

если переменная не существует, как вы могли узнать ее значение?- ни за что.И ... eval === зло.

0 голосов
/ 13 июля 2011

Хотя это не документировано и не рекомендовано полностью, вы можете просматривать локальные переменные.

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

...