JSfiddle课程 - 功能和操作员

时间:2016-03-19 17:03:27

标签: javascript jquery function operators

下面是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!");
    }
}

1 个答案:

答案 0 :(得分:2)

哈。该代码具有欺骗性。列车速度 列车速度,这是列车位置的每次计算之间的 延迟 。这在行

中得到证明
animation = setInterval(frame, trainSpeed);

setInterval的第二个参数确定调用frame函数的频率,以毫秒为单位。)

如果我是代码的作者,我宁愿将变量trainSpeed重命名为trainDelay