为了账号安全,请及时绑定邮箱和手机立即绑定

一个小改变, 不同的结果!

一个小改变, 不同的结果!

UncleKeith 2015-10-05 19:31:31
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。为什么结果会不一样!!求解答
查看完整描述

2 回答

?
UncleKeith

TA贡献3条经验 获得超0个赞

两个结果都不会报错哦


查看完整回答
反对 回复 2015-10-07
?
Y_du

TA贡献43条经验 获得超5个赞

b=null;
alert(b());

这样应该实现不了你要的效果。因为var b=box();在这你申明了b是box()的一个实例对象,你访问b()的时候会去找box()这个函数,而你在b=null;这样的赋值,再去调用b()时应该会报错。这时候b只是一个参数而不是谁的实例对象。

查看完整回答
反对 回复 2015-10-05
  • UncleKeith
    UncleKeith
    两个结果都不会报错 但是结果却不一样
  • Y_du
    Y_du
    肯定不会报错了,只是一个能正常显示。一个会输出未定义
  • 2 回答
  • 0 关注
  • 1448 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信