Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不是';t时间变量变化?_Javascript_Variables_Ecmascript 6_Declaration - Fatal编程技术网

Javascript 为什么不是';t时间变量变化?

Javascript 为什么不是';t时间变量变化?,javascript,variables,ecmascript-6,declaration,Javascript,Variables,Ecmascript 6,Declaration,函数getTime(){ const d=新日期(); const secs=d.getSeconds(); const mins=d.getMinutes(); const hours=d.getHours(); 返回{ “小时”:小时, “分钟”:分钟, “秒”:秒 } } 让时间=getTime(); setInterval(getTime,1000); 设置间隔(()=>{ log(`time.hours}:${time.mins}:${time.secs}`); }, 1000);ti

函数getTime(){ const d=新日期(); const secs=d.getSeconds(); const mins=d.getMinutes(); const hours=d.getHours(); 返回{ “小时”:小时, “分钟”:分钟, “秒”:秒 } } 让时间=getTime(); setInterval(getTime,1000); 设置间隔(()=>{ log(`time.hours}:${time.mins}:${time.secs}`);
}, 1000);
time
变量仅在脚本加载并保持该状态时声明一次。将其移动到间隔内以保持更新。 函数getTime(){ const d=新日期(); const secs=d.getSeconds(); const mins=d.getMinutes(); const hours=d.getHours(); 返回{ “小时”:小时, “分钟”:分钟, “秒”:秒 } } 设置间隔(()=>{ const time=getTime(); log(`time.hours}:${time.mins}:${time.secs}`);
}, 1000);此时,您只需将
时间的值设置为
getTime()
一次

如果希望更改值,则必须在每次迭代中再次设置该值

setInterval(() => {
    var time = getTime();
    console.log(`${time.hours}:${time.mins}:${time.secs}`);
}, 1000);

时间不会改变,因为您使用的变量不会更新。 这里有两个问题

const time=getTime()//其调用一次和时间值为常量 再也不会改变了

setInterval(getTime,1000)//这里函数正在执行,但是 返回值从未使用过,也从未分配给时间变量 是印刷的

函数getTime(){ const d=新日期(); const secs=d.getSeconds(); const mins=d.getMinutes(); const hours=d.getHours(); 返回{ “小时”:小时, “分钟”:分钟, “秒”:秒 } } //const time=getTime()//它被调用一次,时间值为const,以后将不再更改 //setInterval(getTime,1000)//在这里,函数正在执行,但返回值从未使用,也从未分配给打印的时间变量。 设置间隔(()=>{ var-time=getTime(); //盖蒂姆 log(`time.hours}:${time.mins}:${time.secs}`);
}, 1000);
这是因为您没有更新
time
变量,只是在
setInterval
中调用
getTime

应该是这样的:

setInterval(function() {
  time = getTime();
  console.log(`${time.hours}:${time.mins}:${time.secs}`);
}, 1000);
注意:

如果使用
cons
关键字将
time
变量声明为常量,尝试更改它将抛出以下错误:

未捕获类型错误:分配给常量变量

演示:

函数getTime(){ const d=新日期(); const secs=d.getSeconds(); const mins=d.getMinutes(); const hours=d.getHours(); 返回{ “小时”:小时, “分钟”:分钟, “秒”:秒 } } var-time=getTime(); setInterval(函数(){ time=getTime(); log(`time.hours}:${time.mins}:${time.secs}`);
}, 1000);哈!我已经将“时间”改为“让”,因为我想这是在这个脚本的范围内改变的。但是,const是可以的,因为这些值都不会在函数的范围内改变……这是我想到的第一件事。此外,我非常确定es6如果试图重新写入到“const”,实际上会出错……不确定。是的!就这样。我一看到你答案的第一部分…就只分配一次!:(@VisWebsoft是的,它需要在
setInterval
回调中分配。刚刚分配。IDK我们需要等待10分钟才能接受。