JavaScript权威指南-读书笔记之:闭包调试器

function inspect(inspector,title){
	var expression,result;
	if("ignore" in arguments.callee)return;

	while(true){
		var message="";
		if(title) message = title +"\n";
		if(expression) message+= "\n" +expression +" ==> "+result +"\n";
		else expressin="";
		message +="Enter an expression to evaluate:";
		expression = prompt(message,expression);
		if(!expression)return;
		result=inspector(expression);
	}
}

function factorial(n){
	var inspector =function ($){	return eval($);}
	inspect(inspector,"Entering factorial()");
	var result = 1;
	while(n>1){
		result=result*n;
		n--;
		inspect(inspector,"factorial() loop");
	}
	inspect(inspector,"Exiting factorial()");
	return false;
}

factorial(4);
闭包 var inspector =function ($){ return eval($);} //使用这个闭包来捕获一个函数中的当前作用域(包括局部变量和函数的参数),并将它与全局的eval()函数组合起来,从而允许察看作用域。eval()得到javascript代码的一个字符串并返回其结果。通过把这个闭包传递给inspect函数,从而在函数中创建一个断点。inspect()函数使用了 window.prompt()方法向用户显示文本,并允许他们输入一个字符串。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章