javascript setInterval()变量作用域问题

function updateHeight(){
var updateheight = setInterval('adjustHeight()', 1000);
}

function adjustHeight(){
if (objload) {
obj.adjustHeight();
clearInterval(updateheight);
}
}

问:updateheight是函数内的局部变量,clearInterval(updateheight)这句是否有效?是因为setInterval是独立于加载进程的原因吗?谢谢。
谢谢。全文太长,这部分代码的意思就是等一个obj加载完了再改大小。我也觉得是无效,但是拿不准,不想再增加全局变量,把它改成这样了:
function updateHeight(){
var updateheight = setInterval(function(){
if (objload) {
obj.adjustHeight();
clearInterval(updateheight);
}
}
, 1000);
}

text44:积分会送给辛巴达的,我又专门给你开了一个问题,麻烦你再回答一下吧

第1个回答  2008-11-21
你最好把全文贴出来 这样看不出来 你2个函数引用时是怎么个情形

按道理来说 clearInterval(updateheight)是无效的 如果updateheight真的是局部的话,不过不是没特殊情况 要看代码才知道
第2个回答  2008-11-21
updateheigth 只能在updateHeight() 这个Function里有用。
只能定义全局
var updateheight;
function updateHeight(){
updateheight = setInterval(function(){
if (objload) {
obj.adjustHeight();
clearInterval(updateheight);
}
}
, 1000);
}

回答完了才看到问题的最后一句话。=。=。
还是提交了。
第3个回答  2008-11-21
对了, updateheight 的作用域只限于函数内.

var updateheight ;
function updateHeight(){
updateheight = setInterval('adjustHeight()', 1000);
}
这样就可以了

提醒一下: 变量名和函数名太相似了, 千万别看错了本回答被提问者采纳

javascript setInterval()变量作用域问题
按道理来说 clearInterval(updateheight)是无效的 如果updateheight真的是局部的话,不过不是没特殊情况 要看代码才知道

关于javascript里面形式参数与实际参数不同名的问题
首先,你讲的第一条和第二条是绝对不会的.可能是代码别处有问题你没发现.函数定义时参数对应的是函数作用域内.调用的时候参数名是对应的调用域.所以,定义的时候函数内要引用定义处的参数名.调用的时候,传的参数的变量名要对应调用域的变量 没代码不能实际分析,以后你会明白的.参数undefined不一定是...

JS里定义变量的位置
一、js全局变量和局部变量 1、全局变量和它的作用域全局变量是指在程序开头的说明部分定义和说明的量。它的作用域分为两种情况: 1)在全局变量和局部变量不同名时,其作用域是整个程序。 2)在全局变量和局部变量同名时,全局变量的作用域不包含同名局部变量的作用域。2、局部变量和它的作用域...

词法、函数和块作用域
词法作用域定义于代码编译阶段,JavaScript 利用 eval 和 with 提供欺骗词法作用域的机制。然而,这些机制在严格模式下受限于自己的词法作用域,不可修改所在作用域。setTimeout 和 setInterval 可接收动态生成函数的字符串参数,但这些功能已过时不推荐使用。with 可创建隔离词法作用域,但其声明不会限制在...

javascript执行原理(js执行原理与过程)
6、\/c:forEach附注:不论是对整数还是对集合进行迭代,c:forEach的varStatus属性所起的作用相同。和var属性一样,varStatus用于创建限定了作用域的变量(改变量只在当前标签体内起作用)。JavaScript实现对某个网站的某个链接进行每2秒钟访问一次?简单讲一下原...1、setInterval()方法可按照指定的周期...

useEffect中的setInterval
在这不依赖于外部的`count`变量},1000);return()=>clearInterval(id);},[]);\/\/?我们的effect不使用组件作用域中的任何变量return{count};} setCount?函数的身份是被确保稳定的,所以可以放心的省略掉 此时,setInterval?的回调依旧每秒调用一次,但每次?setCount?内部的回调取到的?count?是最新...

2023 JavaScript 面试题以及答案
12. 全局变量是什么?这些变量如何声明,以及与之相关的问题有哪些?全局变量是在函数外定义的变量,具有全局作用域,可以被任何函数使用而无需将它们作为参数传递给函数。依赖全局变量的代码很难进行调试和测试。13. 在JavaScript中,NULL是什么意思?NULL值表示没有值或没有对象。它可以被称为空值\/空...

jquery.data为什么可以避免内存泄露?内存泄露是怎么产生的?
换句话说,来自JavaScript代码的表格元素的引用会引起在内存里存整个表格。当保留DOM元素的引用的时候,仔细考虑下。4.闭包 一个JavaScript开发的关键点是闭包:从父级作用域捕获变量的匿名函数。很多开发者发现,由于JavaScript runtime的实现细节,有以一种微妙的方式泄漏的可能,这种特殊的情况:1234567891011...

JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
当前作用域的上下文出现在控制台中,还有所有的局部变量和全局变量。将鼠标光标移到变量上可以查看变量的值。 在代码中还可以创建条件断点: JavaScript if (condition) { debugger;} 还可以根据自己需要在开发者工具中插入断点和条件断点。在Chrome开发者工具中,在Sources视图中点击行号即可增加断点。如果在断点上点击...

前端经典面试题(包含JS、CSS、React、浏览器等)
它有数字类型 1 , set.has(1) 返回 true 。 这题考察的是对象的键名的转换。 catch 块接收参数 x 。当我们传递参数时,这与变量的 x 不同。这个变量 x 是属于 catch 作用域的。 之后,我们将这个块级作用域的变量设置为 1 ,并设置变量 y 的值。现在,我们打印块级作用域的变量 x ,它等于 1 。

相似回答