如果运行此代码,则会注意到此错误:
错误:未捕获ReferenceError:时间未定义
我知道问题出在哪里,但是我不明白为什么我不能在名为stats的对象的键中分配键。问题出在下面代码的第五行。卸下该部件可以解决问题。有什么建议吗?我希望能够将stats.times乘以2以获得总时间。
'use strict'
var stats = {
times: 0,
totalTime: times * 2
}
var timer = {
currentTime: 2,
defaultTime: 2,
state: "paused",
running() {
setTimeout(() => {
if (timer.state === "running") {
if (timer.currentTime > 0) {
console.log(timer.currentTime);
timer.currentTime--;
timer.running();
} else if (timer.currentTime === 0) {
stats.times++;
console.log("Timers completed: " + stats.times);
console.log("Time total: " + stats.totalTime);
}
}
}, 1000);
},
startpause() {
if (timer.state === "paused") {
timer.state = "running";
timer.running();
} else if (timer.state === "running") {
if (timer.currentTime === 0) {
timer.restart();
} else {
timer.state = "paused";
}
}
},
restart() {
timer.state = "paused";
timer.currentTime = timer.defaultTime;
}
}
timer.startpause();
答案 0 :(得分:0)
在基本创建时间之前,不可能执行* 2。 由于这两个参数都位于同一对象上,因此它们是在同一时间创建的。
如果您想要更具动态性的东西,可以编辑时间并自动更改可以使用的总时间:
var stats = {
times: 0,
get totalTime() {
return this.times * 2
}
}
答案 1 :(得分:0)
您可以定义一个吸气剂,以便访问stats.totalTime()
将运行一个函数来计算结果。
'use strict'
var stats = {
times: 0,
get totalTime() {
return this.times * 2;
}
}
var timer = {
currentTime: 2,
defaultTime: 2,
state: "paused",
running() {
setTimeout(() => {
if (timer.state === "running") {
if (timer.currentTime > 0) {
console.log(timer.currentTime);
timer.currentTime--;
timer.running();
} else if (timer.currentTime === 0) {
stats.times++;
console.log("Timers completed: " + stats.times);
console.log("Time total: " + stats.totalTime);
}
}
}, 1000);
},
startpause() {
if (timer.state === "paused") {
timer.state = "running";
timer.running();
} else if (timer.state === "running") {
if (timer.currentTime === 0) {
timer.restart();
} else {
timer.state = "paused";
}
}
},
restart() {
timer.state = "paused";
timer.currentTime = timer.defaultTime;
}
}
timer.startpause();