简单的 Javascript 时钟变量赋值

Simple Javascript Clock Variable Assignment

以下带注释的 javascript 代码创建了一个简单的计时器,为了 MWE,它出现在控制台日志中。我正在尝试解释这段代码的每一部分,但我仍然停留在第 2 节和第 10 节中的作业细节上。我谦虚地请求帮助填补缺失的部分。

//1-Create a function "startTimer" with parameter "duration"
function startTimer(duration) {

//2-Declare a variable "timer" with some strange comma separated assignment (HELP HERE)
var timer = duration, minutes, seconds;

//3-Declare an unassigned variable "output"
var output;

//4-setInterval, which has the syntax *setInterval(function, milliseconds, param1, param2, ...)* indicated that the code below will be performed every interval of 1000 ms, or every one second.
setInterval(function () {

//5-Assign variable "minutes" the value of timer/60 and has radix (base) 10.
minutes = parseInt(timer / 60, 10);

//6-Assign variable "seconds" the value of timer mod 60 and has radix (base) 10.
seconds = parseInt(timer % 60, 10);

//7-Assign variable "minutes" to the value of "0" + minutes if minutes < 10, or minutes if not. This is accomplished with the ternary operator "?", which has syntax *condition ? exprT : exprF* 
minutes = minutes < 10 ? "0" + minutes : minutes;

//8-Assign variable "seconds" in the same way minutes are assigned, which adds a leading zero if the value is <10.
seconds = seconds < 10 ? "0" + seconds : seconds;

//9-Assign variable "output" to minutes concatenated with ":" concatenated with seconds
output = minutes + ":" + seconds;

//10-If the value of timer incremented downward by one (HELP ON WHAT THAT MEANS) is less than zero then assign variable "timer" to the value of variable "duration", which will be (HELP ON WHERE DURATION GETS ITS VALUE).
if (--timer < 0) {
timer = duration;
}

//11-Output the formatted timer to the console log
console.log(output);

//12-End the function performed in setInterval. Also set the interval in which the function is repeated to 1000 ms (the second argument in the setInterval function).
}, 1000);

//13-End of function startTimer
}

第 2 部分

var timer = duration, minutes, seconds;

这一行声明了 3 个变量:timerminutesseconds
它还将变量 timer 初始化为 duration.

的值

第 10 节

if (--timer < 0) {
timer = duration;
}

--timer语法表示定时器的值先减1然后读取它的值进行if (timer < 0)比较
duration 变量是 startTimer 函数的参数,因此它的值由函数的用户在这段代码的范围之外赋值。

为了完整起见,这是一个包含完整解释的更新版本。此代码完全包含在 javascript 中,没有任何 HTML 等(例如,在 code.org app studio 上)。

//1-Create a function "startTimer" with parameter "duration"
function startTimer(duration) {

//2-Declare a variable "timer" and assign it the value of the parameter "duration".
var timer = duration;


//3-Declare unassigned variables "output", "minutes", and "seconds".
var output;
var minutes;
var seconds;

//4-setInterval, which has the syntax *setInterval(function, milliseconds, param1, param2, ...)*. With section 12, this code below will be performed every interval of 1000 ms, or every one second.
setInterval(function () {

//5-Assign variable "minutes" the value of timer/60 with radix (base) 10.
minutes = parseInt(timer / 60, 10);

//6-Assign variable "seconds" the value of timer mod 60 with radix (base) 10.
seconds = parseInt(timer % 60, 10);

//7-Assign variable "minutes" to the value of "0" + minutes if minutes < 10, or minutes if not. This is accomplished with the ternary operator "?", which has syntax *condition ? exprT : exprF* 
minutes = minutes < 10 ? "0" + minutes : minutes;

//8-Assign variable "seconds" in the same way minutes are assigned, which adds a leading zero if the value is <10.
seconds = seconds < 10 ? "0" + seconds : seconds;

//9-Assign variable "output" to minutes concatenated with ":" concatenated with seconds
output = minutes + ":" + seconds;

//10-Decrement (lower) the value of timer by one first (since -- is in front), THEN check if that value is <0. If so, assign variable "timer" to the value of variable "duration", which was initially set by a parameter at the beginning of the setTimer function. This causes the timer to loop back to the initial duration once the timer passes zero. You could put different code here if you want a different result after the timer reaches zero.
if (--timer < 0) {
timer = duration;
//if you want to stop the function entirely when the function passes zero, uncomment the next line to end the function by returning nothing.
//return;
}

//11-Output the formatted timer to the console log. You could also use something like, "setText("id",output);" to set a UI element to the value of the timer.
console.log(output);

//12-End the function performed in setInterval. Also set the interval in which the function is repeated to 1000 ms (the second argument in the setInterval function).
}, 1000);

//13-End of function startTimer
}

//14-Start the timer by calling function "startTimer" with a 30 second duration
startTimer(30);