不知道是不是变量提升的问题

function Box(age) {

    this.name = 'ss';

    this.age = age;

    this.flag = true;

    return this;

} //定义一个构造函数


var box1 = new Box(10); // new出一个实例


setTimeout(function () {

    box1.flag = false;

    console.log(box1.flag);

}, 5000); //五秒钟之后把 实例box1里面的flag变为false.



var inter = setInterval(function () {

    if (box1) {

        console.log(box1);

        if (!box1.flag) {

            box1 = null;

            var box1 = new Box(20);

        }

    } else {

        console.log('cleared Interval as box1 is null now');

        clearInterval(inter);

    }


}, 1000); //每一秒种先控制台打印出box1, 如果flag为false, 那么就销毁box1,然后再new出一个box1. 

结果是直接输出box1是null.

cleared Interval as box1 is null nowfalse

请问是不是由于var会优先声明局部变量. 导致声明后直接box = null. 然后就输出 else里面的内容?


桃花长相依
浏览 468回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript