js 为什么提示函数未定义
functiona(){vari=1;varx;varb=function(){console.log(i);i++;if(i==5){clearInterval(x);...
function a(){
var i = 1;
var x;
var b = function(){
console.log(i);
i++;
if(i==5){
clearInterval(x);
return;
}
}
x = setInterval("b()",1000);
}
a();
提示 setInterval 里的b() 没有定义?这是怎么回事?当然把b前面的var去掉变成全局变量就能通过。我只想知道为什么不能在函数内部定义 展开
var i = 1;
var x;
var b = function(){
console.log(i);
i++;
if(i==5){
clearInterval(x);
return;
}
}
x = setInterval("b()",1000);
}
a();
提示 setInterval 里的b() 没有定义?这是怎么回事?当然把b前面的var去掉变成全局变量就能通过。我只想知道为什么不能在函数内部定义 展开
2个回答
展开全部
是作用域的问题。因为你的变量 b 是定义在函数 a 作用域里的。setInterval 第一个参数可以是 function,也可以是 code(字符串)。如果是 code 的话,code 将会使用 eval()() 执行,eval() 执行会带来很多问题,所以这种方法不被推荐使用
你这个例子就是因为 eval 在执行的时候作用域在顶层,也就是会在 window 下找你的 b 函数,所以就是 undefined。
推荐你使用 function 做第一个参数,代码就可以写成:
var x = setInterval( function() {
console.log( i );
if( ++i == 5 ) {
clearInterval( x );
}
}, 1000 );
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询