Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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 在最后一次迭代之后,setInterval返回未定义的值_Javascript_Ecmascript 6_Setinterval - Fatal编程技术网

Javascript 在最后一次迭代之后,setInterval返回未定义的值

Javascript 在最后一次迭代之后,setInterval返回未定义的值,javascript,ecmascript-6,setinterval,Javascript,Ecmascript 6,Setinterval,我正试图在X时间后将背景色调换,但在上一次迭代后,步骤设置为0,我得到的是未定义的,我不明白为什么:/ constfoo=()=>{ 常量颜色=[{ 初级:“浅绿色”, 次要:“#7fe27f” }, { 初级:“黄金”, 次要:“#efc900” }, { 初级:“1590FF”, 次要:“#0479FF” }, { 主要:“00BFFF”, 次要:'#06ace3' } ] 让步骤=-1 返回设置间隔(()=>{ 步骤===colors.length?步骤=0:步骤++ 返回console.

我正试图在X时间后将背景色
调换,但在上一次迭代后,步骤设置为0,我得到的是
未定义的
,我不明白为什么:/

constfoo=()=>{
常量颜色=[{
初级:“浅绿色”,
次要:“#7fe27f”
},
{
初级:“黄金”,
次要:“#efc900”
},
{
初级:“1590FF”,
次要:“#0479FF”
},
{
主要:“00BFFF”,
次要:'#06ace3'
}
]
让步骤=-1
返回设置间隔(()=>{
步骤===colors.length?步骤=0:步骤++
返回console.log(颜色[步骤]);
}, 2000)
}

你知道为什么会这样吗?我怎样才能修好它

step
等于
colors.length-1
时,您将执行
step++
,这将使
step==colors.length
。然后您将访问
colors[colors.length]
,它是
未定义的

您必须检查您的状态是否为
step===colors.length-1

但更好的解决方案是使用余数运算符。您只需执行以下操作:

console.log(colors[step++ % colors.length]);

“还有它的作用”——真的吗<代码>foo
将始终显示。“内部”
return
将返回
undefined
,因为
console.log()
不返回任何内容。但是->;这不是应该如何使用的方式。它只是从我的react代码中快速提取,为了简单起见,我想省略所有的useEffect、useState和不必要的代码;)不过还是要谢谢你!