我不明白为什么const hours = (date.getHours() + 11) % 12 +1;
以 1-12 格式返回小时数?我将这段代码复制并粘贴到我的程序中,但没有解释。任何解释这一点的帮助都会有所帮助,谢谢。
这就是我到目前为止所拥有的...
const clockContainer = document.querySelector('.js-clock'),
clockTitle = clockContainer.querySelector('h1');
function getTime() {
const date = new Date(); //instantiate Date objet and set it to a constant variable
const seconds = date.getSeconds(); // Gets the date objects seconds value into a const
const minutes = date.getMinutes();
const hours = (date.getHours() + 11) % 12 +1;
// Ternary operator (conditional statement ? "if code block" : "else code block")
clockTitle.innerText = `${hours < 10 ? `0${hours}` : hours}:${minutes < 10 ? `0${minutes}` : minutes}:${seconds < 10 ? `0${seconds}` : seconds}`;
}
// initialize application
function init() {
getTime();
setInterval(getTime, 1000); // runs getTime function every second to make the clock run
}
// call initialize function
init();
Modulus 运算符返回除法的余数。在这种情况下,回想一下你学习小数位之前的小学,简单地通过数数来除法,"a
会进入b
多少次?",然后留下一个你会忘记的余数。
例如,5两次进入 10,因此 10 除以 5 就是 2。同样,5 两次进入 12,但不是一路......您只剩下 2 个的余数。因此,12 除以 5 是 2,余数为 2。因此,12 % 5 是 2。
你可以把模运算(n % m
(想象成问:"n
m
的最接近的倍数有多高?这就是我喜欢在自己的大脑中理解它的方式。
所以,当你有类似18 % 12
的东西时,你会问,"12 会有多少次进入 18 次?回答,一次,但你不是在那之后...你追求剩下的东西。在这种情况下,6.
- "18 比最接近的 12 倍数高出多高?"> 12
- 的最接近的倍数是 12(因为下一个最高是 24(,18 是 6 比 12。
考虑通读一下我链接的维基百科页面。