一个javascript的闭包问题,求详细解释
functionsay667(){//Localvariablethatendsupwithinclosurevarnum=666;varsayAlert=functio...
function say667() {
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() { alert(num); }
num++;
return sayAlert;
}
var sayNumber = say667();
sayNumber(); // alerts 667
上面那段代码具体怎么执行的?为什么是667不是666? 展开
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() { alert(num); }
num++;
return sayAlert;
}
var sayNumber = say667();
sayNumber(); // alerts 667
上面那段代码具体怎么执行的?为什么是667不是666? 展开
展开全部
关于javascript闭包,也许仅一个回答无法说清,推荐你阅读司徒正美大神的博客
http://www.cnblogs.com/rubylouvre/archive/2009/08/21/1551270.html
javascript变量的作用域
和《javascript面向对象程序设计》。
如果我用不标准的语言回答你,那么答案是:
var sayNumber=say667();的过程中执行了say667(),声明了局部变量num=666
和局部变量sayAlert,注意在javascript中函数也是一种数据类型。因为在同个作用域下声明了这个函数,所以在外部调用时有访问num的权限,然后num++,执行sayNumber()时alert的num指向同一个num的引用,而该变量已加1,所以alert 667
重复阅读,弄清我的意思
http://www.cnblogs.com/rubylouvre/archive/2009/08/21/1551270.html
javascript变量的作用域
和《javascript面向对象程序设计》。
如果我用不标准的语言回答你,那么答案是:
var sayNumber=say667();的过程中执行了say667(),声明了局部变量num=666
和局部变量sayAlert,注意在javascript中函数也是一种数据类型。因为在同个作用域下声明了这个函数,所以在外部调用时有访问num的权限,然后num++,执行sayNumber()时alert的num指向同一个num的引用,而该变量已加1,所以alert 667
重复阅读,弄清我的意思
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询