iT邦幫忙

2

[javascript] setInterval() 設置變數

Zaku 3 周前3636 瀏覽

想問一下關於setInterval在傳遞變數時如何設置比較恰當

var flag=true;

if(flag==true){
var index=0;
setInterval(theFinction,2000,index++);
}

theFinction(index){
console.log(index);
}

假定我要傳送index,讓它顯示0,1,2,3....
但在我不寫成全域變數的情況下,他只會一直跑0,0,0,0,.....

2 個回答

1
dog830228
iT邦新手 3 級 ‧ 3 周前

給你參考一下

https://jsfiddle.net/mnt990x9/

fillano iT邦超人 1 級 ‧ 3 周前 檢舉

或是用return function製造出closure:
https://jsfiddle.net/6t29esv7/

Zaku iT邦新手 5 級 ‧ 3 周前 檢舉

fillano大return function那是怎麼一直抓到i?全部變數?

fillano iT邦超人 1 級 ‧ 3 周前 檢舉

就說是closure阿XD,你去找一下closure的資料,例如:
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Closures

0
froce
iT邦新手 4 級 ‧ 3 周前
var flag=true;

function display_index(){
    console.log(index);
    index += 1;
}

index = 0;
// console.log(index);
if(flag == true){
    setInterval(display_index,2000);
}

使用全域變數。

Zaku iT邦新手 5 級 ‧ 3 周前 檢舉

大大這樣還是全域變數

我要發表回答

立即登入回答