Rumah > Soal Jawab > teks badan
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.
Hasilnya ialah kotak keluaran langsung1 adalah batal.
cleared Interval as box1 is null now
false
Adakah kerana var akan mengisytiharkan pembolehubah tempatan terlebih dahulu, menyebabkan kotak = batal terus selepas pengisytiharan Kemudian kandungan dalam else akan dikeluarkan?
phpcn_u15822017-06-12 09:31:36
Memandangkan anda mempunyai soalan, adakah anda tidak akan tahu keputusan selepas mengalih keluar var?
Ia sememangnya promosi berubah-ubah, anda juga boleh mengeluarkan kotak1 yang ada dalam pemasa
var inter = setInterval(function () {
console.log(box1);
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);
Hasilnya adalah output dahuluundefined
bukan batal seperti yang anda fikirkan.
sebenarnya bersamaan dengan
var inter = setInterval(function () {
var box1;
if (box1) {
console.log(box1);
if (!box1.flag) {
box1 = null;
box1 = new Box(20);
}
} else {
console.log('cleared Interval as box1 is null now');
clearInterval(inter);
}
},1000)
Jadi, pemasa telah dicetuskan sejurus selepas mencapai titik, dan mendapati bahawa kotak1 telah diisytiharkan, tetapi tugasan sebenar belum bermula, jadi jika mengambil laluan lain