function getTime() {
const d = new Date();
const secs = d.getSeconds();
const mins = d.getMinutes();
const hours = d.getHours();
return {
'hours': hours,
'mins': mins,
'secs': secs
}
}
let time = getTime();
setInterval(getTime, 1000);
setInterval(() => {
console.log(`${time.hours}:${time.mins}:${time.secs}`);
}, 1000);

显示的时间不会改变。它只是连续运行,输出相同的时间而不是每秒都显示一次变化......
答案 0 :(得分:3)
time
变量仅被声明一次。在间隔内移动它以保持更新。
function getTime() {
const d = new Date();
const secs = d.getSeconds();
const mins = d.getMinutes();
const hours = d.getHours();
return {
'hours': hours,
'mins': mins,
'secs': secs
}
}
setInterval(() => {
const time = getTime();
console.log(`${time.hours}:${time.mins}:${time.secs}`);
}, 1000);
答案 1 :(得分:3)
您只需将time
的值设置一次,此时的值为getTime()
。
如果要更改值,则必须在每次迭代时再次设置值。
setInterval(() => {
var time = getTime();
console.log(`${time.hours}:${time.mins}:${time.secs}`);
}, 1000);
答案 2 :(得分:2)
这是因为您没有更新time
变量,只是在getTime
中调用setInterval
。
应该是这样的:
setInterval(function() {
time = getTime();
console.log(`${time.hours}:${time.mins}:${time.secs}`);
}, 1000);
注意:强>
如果您使用time
关键字将cons
变量声明为常量,尝试更改它会引发此错误:
未捕获的TypeError:分配给常量变量。
<强>演示:强>
function getTime() {
const d = new Date();
const secs = d.getSeconds();
const mins = d.getMinutes();
const hours = d.getHours();
return {
'hours': hours,
'mins': mins,
'secs': secs
}
}
var time = getTime();
setInterval(function() {
time = getTime();
console.log(`${time.hours}:${time.mins}:${time.secs}`);
}, 1000);
答案 3 :(得分:1)
时间不会改变,因为您正在使用未更新的变量。 这是两个问题
const time = getTime(); //调用一次,时间值为const 永远不会再改变
setInterval(getTime,1000); //此处函数正在执行但是 永远不会使用返回值,也永远不会将其分配给时间变量 打印出来。
function getTime() {
const d = new Date();
const secs = d.getSeconds();
const mins = d.getMinutes();
const hours = d.getHours();
return {
'hours': hours,
'mins': mins,
'secs': secs
}
}
//const time = getTime();//its called once and time values are const will never change again
//setInterval(getTime, 1000);//here function is getting executed but return value is never used and never assigned to time variable which is printed.
setInterval(() => {
var time=getTime();
//getTime
console.log(`${time.hours}:${time.mins}:${time.secs}`);
}, 1000);