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

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。

为什么结果会不一样!!

求解答

UncleKeith
浏览 1458回答 2
2回答

UncleKeith

两个结果都不会报错哦

Y_du

b=null;alert(b());这样应该实现不了你要的效果。因为var b=box();在这你申明了b是box()的一个实例对象,你访问b()的时候会去找box()这个函数,而你在b=null;这样的赋值,再去调用b()时应该会报错。这时候b只是一个参数而不是谁的实例对象。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript