【发布时间】:2022-01-01 14:02:15
【问题描述】:
我是 JavaScript 新手,我做了一个简单的秒表构造函数:
function Stopwatch() {
var started = false;
var elapsed;
var start;
d = new Date();
this.duration = function() {
if (started) {
throw "Stopwatch is still running"
} else {
return (elapsed);
}
}
this.start = function() {
if (started) {
throw "Stopwatch has already started";
} else {
start = d.getTime();
started = true;
}
}
this.stop = function() {
if (!started) {
throw "Stopwatch hasn't started";
} else {
elapsed = d.getTime() - start;
started = false;
}
}
this.reset = function() {
started = false;
elapsed = 0;
}
}
let sw = new Stopwatch();
sw.start();
setTimeout(function () {
sw.stop();
console.log(sw.duration());
}, 500);
错误的逻辑工作正常,但每当我调用 sw.duration() 时,它总是返回零,我不确定为什么会这样,因为我使用的是 var 而不是 let。请告诉我。
【问题讨论】:
-
你应该检查 ES6 类,因为这不是创建构造函数的理想方式。此外,没有理由混合使用
var和let——只要有let可用,就永远不要使用var。最后,隐式全局变量不好,所以请确保您处于严格模式。
标签: javascript global var let