猿问

setTimeout用法

这两个写法什么区别,为什么写成第二种的时候不起作用

1、var CountZeros=setTimeout(function() {

       CountZero()

       },1000)

2、 var CountZeros=setTimeout("CountZero()",1000);


艳妮子Yeah
浏览 1632回答 1
1回答

stone310

第一种写法是声明匿名函数,相当于假如我给函数赋个名字abc,然后setTimeout(abc,1000),只是你那种写法是匿名的第二种写法是字符串写法,相当于内部执行了eval(),这种写法你会发现有时能执行有时不能执行,因为字符串写法只能捕获到全局作用域,就是说CountZero这个函数必须放在全局作用域下才能被执行,而setTimeout(abc,1000)这种写法则既可以捕获全局作用域,也可捕获同一个局部作用域;因此第二种字符串写法是不推荐的,不规范而且功能上有限制,eval()也有安全问题
随时随地看视频慕课网APP

相关分类

JQuery
我要回答