未捕获类型错误:X不是函数。在使用javascript闭包时
我正在玩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(“小错误”)未捕获类型错误:X不是函数。在使用javascript闭包时,javascript,closures,settimeout,infinite-loop,Javascript,Closures,Settimeout,Infinite Loop,我正在玩JavaScript,在控制台中看到以下错误: 未捕获类型错误:div不是函数 函数getRandomColor(){ 变量字母='0123456789ABCDEF'; var color='#'; 对于(变量i=0;i
}这里没有闭包:您正在调用一个返回
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是未定义的
。它是怎么修复的?你认为呢