Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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
未捕获类型错误:X不是函数。在使用javascript闭包时_Javascript_Closures_Settimeout_Infinite Loop - Fatal编程技术网

未捕获类型错误:X不是函数。在使用javascript闭包时

未捕获类型错误:X不是函数。在使用javascript闭包时,javascript,closures,settimeout,infinite-loop,Javascript,Closures,Settimeout,Infinite Loop,我正在玩JavaScript,在控制台中看到以下错误: 未捕获类型错误:div不是函数 函数getRandomColor(){ 变量字母='0123456789ABCDEF'; var color='#'; 对于(变量i=0;i

我正在玩JavaScript,在控制台中看到以下错误:

未捕获类型错误:div不是函数

函数getRandomColor(){ 变量字母='0123456789ABCDEF'; var color='#'; 对于(变量i=0;i<6;i++){ 颜色+=字母[Math.floor(Math.random()*16)]; } 返回颜色; } 函数createDiv(间隔){ 半径=300; 设int=interval; var f=0; var s=2*Math.PI/180; 让timerId=window.setTimeout(函数tick() { var div=document.createElement('div'); div.className='圆圈'; div.style.backgroundColor=getRandomColor(); div.style.left=(半径+半径*数学cos(f))+'px'; div.style.top=(半径+半径*数学sin(f))+'px'; 文件.正文.附件(div); f+=s; 设置超时(滴答,整数); },int) } 设div=createDiv(10); div() 函数getRandomColor(){ 变量字母='0123456789ABCDEF'; var color='#'; 对于(变量i=0;i<6;i++){ 颜色+=字母[Math.floor(Math.random()*16)]; } 返回颜色; } 函数createDiv(间隔){ 半径=300; 设int=interval; var f=0; var s=2*Math.PI/180; setTimeout(函数tick() { var div=document.createElement('div'); div.className='圆圈'; div.style.backgroundColor=getRandomColor(); div.style.left=(半径+半径*数学cos(f))+'px'; div.style.top=(半径+半径*数学sin(f))+'px'; 文件.正文.附件(div); f+=s; 设置超时(滴答,整数); },int) } 设div=createDiv(10); 控制台日志(div); 试一试{ div(); }捕捉(错误){ console.log('错误') } 函数createDivSmall(间隔){ setTimeout(函数tick() { 设置超时(滴答声,间隔); }, 10) } 设divSmall=createDivSmall(10); console.log(divSmall); 试一试{ divSmall(); }捕捉(错误){ console.log(“小错误”) } 函数getRandomColor(){ 变量字母='0123456789ABCDEF'; var color='#'; 对于(变量i=0;i<6;i++){ 颜色+=字母[Math.floor(Math.random()*16)]; } 返回颜色; } 函数createDiv(间隔){ 半径=300; 设int=interval; var f=0; var s=2*Math.PI/180; setTimeout(函数tick() { var div=document.createElement('div'); div.className='圆圈'; div.style.backgroundColor=getRandomColor(); div.style.left=(半径+半径*数学cos(f))+'px'; div.style.top=(半径+半径*数学sin(f))+'px'; 文件.正文.附件(div); f+=s; 设置超时(滴答,整数); },int) } 设div=createDiv(10); 控制台日志(div); 试一试{ div(); }捕捉(错误){ console.log('错误') } 函数createDivSmall(间隔){ setTimeout(函数tick() { 设置超时(滴答声,间隔); }, 10) } 设divSmall=createDivSmall(10); console.log(divSmall); 试一试{ divSmall(); }捕捉(错误){ console.log(“小错误”)
}这里没有闭包:您正在调用一个返回
undefined
的函数,并试图调用
undefined()
,就好像它是一个函数一样。只需调用函数,如
createDiv(10)。请注意,我已经为div添加了高度和宽度,因此结果是可见的

函数getRandomColor(){ 变量字母='0123456789ABCDEF'; var color='#'; 对于(变量i=0;i<6;i++){ 颜色+=字母[Math.floor(Math.random()*16)]; } 返回颜色; } 函数createDiv(间隔){ 半径=300; 设int=interval; var f=0; var s=2*Math.PI/180; 让timerId=window.setTimeout(函数tick(){ var div=document.createElement('div'); div.className='圆圈'; div.style.backgroundColor=getRandomColor(); div.style.height=div.style.width=“50px”; 文件.正文.附件(div); f+=s; 设置超时(滴答,整数); },int) }
createDiv(1000)
这里没有闭包:您正在调用一个返回
undefined
的函数,并试图调用
undefined()
,就好像它是一个函数一样。只需调用函数,如
createDiv(10)。请注意,我已经为div添加了高度和宽度,因此结果是可见的

函数getRandomColor(){ 变量字母='0123456789ABCDEF'; var color='#'; 对于(变量i=0;i<6;i++){ 颜色+=字母[Math.floor(Math.random()*16)]; } 返回颜色; } 函数createDiv(间隔){ 半径=300; 设int=interval; var f=0; var s=2*Math.PI/180; 让timerId=window.setTimeout(函数tick(){ var div=document.createElement('div'); div.className='圆圈'; div.style.backgroundColor=getRandomColor(); div.style.height=div.style.width=“50px”; 文件.正文.附件(div); f+=s; 设置超时(滴答,整数); },int) }
createDiv(1000)
createDiv(10)
调用函数,它将返回
void
,因为函数中没有返回语句。因此
div
不是一个函数,而是
未定义的
。设置控制台日志
div?
后,您是否尝试过它?谢谢。控制台div中的Yes是
未定义的
。它是怎么修复的?你认为它应该是什么?只要您使用
createDiv
它就会运行
setTimeout
。查看答案响应。
div()
应该做什么?
createDiv(10)
调用函数,它将返回
void
,因为函数中没有返回语句。因此
div
不是一个函数,而是
未定义的
。设置控制台日志
div?
后,您是否尝试过它?谢谢。控制台div中的Yes是
未定义的
。它是怎么修复的?你认为呢