熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Javascript >> 正文

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

2022-06-13   來源: Javascript 
javascript中定時器setTimeout的用法一般如下調用beginrotate之後就進入定時執行rotateloop的一個過程如下代碼

  復制代碼 代碼如下:

  var angle = ;

function rotateloop() {
if (angle < ) {
angle++;
//use angle
//
setTimeout(rotateloop() );
}
}

function beginrotate() {
//do something
//
setTimeout(rotateloop() );
}


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

  復制代碼 代碼如下:

  function beginrotate() {

var angle = ;

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


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

  復制代碼 代碼如下:

  function beginrotate() {

var angle = ;

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


只需要將setTimeout的第一個參數改成函數對象而不是字符串就可以了
From:http://tw.wingwit.com/Article/program/Java/Javascript/201401/30272.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.