码迷,mamicode.com
首页 > 其他好文 > 详细

关于setInterval的func(),func,"func()"

时间:2017-07-12 15:28:20      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:tar   处理   变量作用域   asc   运行   问题:   ons   调用   环境   

2017-07-12 13:09:13

遇到一个这样的问题:当在jquery里面用

$(function(

//code ...

setInterval(startTime,1000);

){})

当传入的形参为func时正常,当func()时不可行,只运行了一次,当"func()“也不行,直接什么都没有了

在网上找到了一篇贴子:http://www.softwhy.com/forum.php?mod=viewthread&tid=6940

以及stackoverflow:https://stackoverflow.com/questions/457826/pass-parameters-in-setinterval-function

>>>在全局作用域下  setInterval("fun()",1000); 可以正常执行,但放到window.onload函数中却不能执行。为什么呢?

setInterval现在把以引号包括的可执行代码进行处理。就像eval一样给予执行,JavaScript有一个预编译处理,首先对函数和变量进行预编译。也就是说其函数和变量作用域是在其声明的时候确定的,而不是在执行的时候确定。当setInterval把"fun()"执行环境换为全局的后,对fun的调用是无效的。因为全局不能访问局部的函数和变量。window.onload相对于window来说就是局部的。

关于setInterval的func(),func,"func()"

标签:tar   处理   变量作用域   asc   运行   问题:   ons   调用   环境   

原文地址:http://www.cnblogs.com/giggling/p/7155090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!