下面是jsfiddles的代码 http://jsfiddle.net/7n3rtpqo/3/
我有点困惑,并不完全理解运营商的含义' + ='和' - ='。我想在下面的问题中以外行的方式请求含义。
问题1(参见代码//问题1):
我不明白这个功能来检查火车是否以最快的速度行驶。这可以解释一下吗?给出的解释是,如果它大于10,那么列车可以更快,所以下一行从trainSpeed的值中减去10。
为什么金额为10,为什么减去?
问题2(参见代码//问题2):
这是否意味着列车位置每次从最后更新的位置增加2px?
我还在学习JavaScript。因此,在我试图理解它时,在必要时用外行术语解释会很好。
提前致谢!
var trainSpeed = 250;
var trainPosition = 0;
var animation;
var train = document.getElementById("train");
train.addEventListener("click", speedUp);
var stopButton = document.getElementById("stopButton");
stopButton.addEventListener("click", stopTrain);
//Question 1
function speedUp() {
if (trainSpeed > 10) {
trainSpeed -= 10;
}
console.log("train speed: " + trainSpeed);
clearInterval(animation);
animation = setInterval(frame, trainSpeed);
//Question 2
function frame() {
trainPosition += 2;
train.style.left = trainPosition + 'px';
console.log(trainPosition);
checkPosition(trainPosition);
}
}
function checkPosition(currentPosition) {
if (currentPosition === 260) {
alert("Crash!");
console.log("Crash!");
clearInterval(animation);
}
}
function stopTrain() {
if (trainPosition < 260) {
clearInterval(animation);
console.log("Whew! That was close!");
}
}
答案 0 :(得分:2)
哈。该代码具有欺骗性。列车速度 不 列车速度,这是列车位置的每次计算之间的 延迟 。这在行
中得到证明animation = setInterval(frame, trainSpeed);
(setInterval
的第二个参数确定调用frame
函数的频率,以毫秒为单位。)
如果我是代码的作者,我宁愿将变量trainSpeed
重命名为trainDelay
。