是否赋值的问题

keithR_ 2015-10-05 07:35:40
function box(){
var age=100;
return function(){
age++;
return age;
};
}

var b=box();
alert(b());
alert(b());
alert(b());
b=null;
alert(b());



function box(){
var age=100;
return function(){
age++;
return age;
};
}

alert(box()());
alert(box()());
box()=null;
alert(box()());

两段代码的区别就是是否给box()函数赋值给一个变量b。

为什么结果会不一样!!

求解答
...全文
109 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
keithR_ 2015-10-09
  • 打赏
  • 举报
回复
谢谢谢谢!
天际的海浪 2015-10-05
  • 打赏
  • 举报
回复
每次执行box()都会在一个新的闭包内创建一个新的age变量和一个新的匿名函数,并返回这个匿名函数 你的第一个代码只执行了一次box(),只创建一个age变量和匿名函数,每次调用的b()都是同一个匿名函数,所操作的age变量也是同一个变量 你的第二个代码执行了多次box(),这样就创建了多个age变量和匿名函数,每次调用都不是同一个匿名函数,所操作的age变量也不是同一个变量

87,927

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧