发布网友 发布时间:2022-04-23 01:16
共2个回答
热心网友 时间:2022-04-19 02:51
关于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
重复阅读,弄清我的意思
热心网友 时间:2022-04-19 04:09
var sayAlert = function() { alert(num); }
你只定义了没调用,当你var sayNumber = say667();实际就执行了sayAlert,而此时的num=667;所以,你懂了。如果你把num++写在var sayAlert = function() { alert(num);num++; }那就是666