При открытии данного скрипта в браузере запрашивает число. Но при нажатии ок выдает: 4 => 4. Что автор хотел показать этим примером и как заставить его правильно работать ? Помогите в общем
// * В качестве имени аргумента функция использует малораспрастроненный
// идентификатор $, чем снижается вероятность конфликта имен в инспектируемой
// области видимости. *
// * Создать точку останова можно, передав это замыкание в функцию, как
// показано в примере 8.7. *
// // эта функция является точки останова. Она предлагает пользователю ввести
// // выражение, вычисляет его с использованием замыкания и выводит результат.
// // Используемое замыкание предоставляет доступ к проверяемой области видимости.
// // Таким образом любая функа будет создавать свое собственное замыкание.
// // Реализовано по образу и подобию функции breakpoint() Стива Йена
// //
http://trimpath.com/project/wiki/TrimBreakpoint
function inspect(inspector, title) {
var expression, result;
// существует возмодность отключать точки останова за счет создания
// свойства 'ignore' у этой функции
if('ignore' in arguments.callee) return;
while(true) {
// определить как вывести запрос перед пользователем
var message = "";
// если задан аргумент title, вывести его первым
if(title) message = title + '\n';
// если выражение уже вычислено, привести его вместе с его значением
if(expression) message += '\n' + expression + "==> " + result + '\n';
else expression = '';
// типовое приглашение к вводу всегда должно выводиться:
message += 'Введите выражение, которое следует вычислить:';
// получить ввод пользователя, перевести приглашение и использовать
// последнее выражение как значение по умолчанию
expression = prompt(message, expression);
// если пользователь ничего не ввел(или щелкнул на кнопочке отменить),
// работу в точке останова можно считать оконченной и вернуть
// управление
if(!expression) return;
// В противном случае вычислить выражение с использованием замыкания в
// инспектируемом контексте исполнения. Результаты будут введены на
// следующей итерации
result = inspector(expression);
}
}
// * Обратите внимание: для вывода информации и ввода строки пользователя
// функция inspect() из примера 8.7. задействует метод Window.prompt(). *
// * Рассмотрим пример функции, вычисляющей факториал числа и использующей
// механизм точек останова *
function factorial(n) {
// создать замыкание для этой функции
var inspector = function($) { return eval($); }
inspect(inspector, 'вход в функцию factorial()');
var result = 1;
while(n > 1) {
result = result * n;
n--;
inspect(inspector, 'factorial() loop');
}
inspect(inspector, 'выход из функции factorial() loop');
return result;
}
factorial();