国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js 定時器setTimeout無法調用局部變量的解決辦法

2024-05-06 15:56:23
字體:
來源:轉載
供稿:網友
javascript中定時器setTimeout無法調用局部變量,只需要將setTimeout的第一個參數改成函數對象,而不是字符串,就可以了

javascript中定時器setTimeout的用法一般如下,調用beginrotate之后就進入定時執行rotateloop的一個過程,如下代碼:

復制代碼 代碼如下:


var angle = 0;

function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}

function beginrotate() {
//do something
//......
setTimeout("rotateloop()", 100);
}


這段代碼有一個問題,就是產生了一個全局變量angle,這顯然不是好的編程習慣,所以我們想到使用內嵌函數的方式,將代碼改成如下:

復制代碼 代碼如下:


function beginrotate() {

var angle = 0;

function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout("rotateloop()", 100);
}
}
//do something
//......
setTimeout("rotateloop()", 100);
}


這樣子改了之后,發現javascript報錯了,rotateloop找不到,顯然setTimeout沒有找到rotateloop這個局部內嵌函數,這里只要稍微改一下就可以解決這個問題了,代碼如下:

復制代碼 代碼如下:


function beginrotate() {

var angle = 0;

function rotateloop() {
if (angle < 360) {
angle++;
//use angle
//......
setTimeout(rotateloop, 100);
}
}
//do something
//......
setTimeout(rotateloop, 100);
}


只需要將setTimeout的第一個參數改成函數對象,而不是字符串,就可以了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 长顺县| 禹城市| 特克斯县| 中方县| 东辽县| 碌曲县| 七台河市| 沙河市| 晋宁县| 阳泉市| 临湘市| 绥德县| 湄潭县| 若尔盖县| 高要市| 抚州市| 侯马市| 高雄县| 宜都市| 天镇县| 淮滨县| 乌兰浩特市| 黎平县| 扶余县| 桑植县| 湄潭县| 简阳市| 怀仁县| 南昌县| 汝城县| 哈尔滨市| 定远县| 镇坪县| 崇阳县| 沙田区| 芷江| 扶风县| 洪泽县| 项城市| 宝兴县| 贵阳市|