国产探花免费观看_亚洲丰满少妇自慰呻吟_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的第一個參數改成函數對象,而不是字符串,就可以了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 宣威市| 塔城市| 玛纳斯县| 石屏县| 天柱县| 谷城县| 金昌市| 蒙城县| 江油市| 苍梧县| 攀枝花市| 张家口市| 宝清县| 临潭县| 教育| 哈密市| 定日县| 青川县| 兴业县| 咸阳市| 仪征市| 镇坪县| 洞头县| 福贡县| 阿克| 嘉祥县| 岳普湖县| 阿拉善左旗| 开化县| 兴国县| 黔西县| 都江堰市| 南郑县| 石嘴山市| 南部县| 高雄市| 兰考县| 布尔津县| 廊坊市| 阿坝县| 深泽县|