这两个写法什么区别,为什么写成第二种的时候不起作用1、var CountZeros=setTimeout(function() { CountZero() },1000)2、 var CountZeros=setTimeout("CountZero()",1000);
1 回答
已采纳
stone310
TA贡献361条经验 获得超191个赞
第一种写法是声明匿名函数,相当于假如我给函数赋个名字abc,然后setTimeout(abc,1000),只是你那种写法是匿名的
第二种写法是字符串写法,相当于内部执行了eval(),这种写法你会发现有时能执行有时不能执行,因为字符串写法只能捕获到全局作用域,就是说CountZero这个函数必须放在全局作用域下才能被执行,
而setTimeout(abc,1000)这种写法则既可以捕获全局作用域,也可捕获同一个局部作用域;
因此第二种字符串写法是不推荐的,不规范而且功能上有限制,eval()也有安全问题
- 1 回答
- 0 关注
- 1634 浏览
添加回答
举报
0/150
提交
取消