簡體   English   中英

在javascript中,在for循環中聲明多個變量

[英]in javascript, declare more than one variable in for loop

有以下javascript代碼

// note: declaring i in this loop
for( var i=0; i<args.length; i++ ) {

   var elem = args[i];
   ...

   if( elem.attr == 'class' ) {

        // note declaring arr and i in this loop
        for( var arr=elem.val.split(' '), i=0; i<arr.length; i++ ) {

            element.classList.add(arr[classCt]);
        }
        continue;
    }
}

問題是, i在第二for循環是相同i在第一聲明for環路。

認為var構造允許用逗號分隔多個變量。

當在第二個循環classCt i更改為classCt時,代碼按預期工作

您只有一個范圍,因此只能有一個具有相同名稱的變量。 你是正確的,var允許用逗號分隔多個變量,但你不能在同一范圍內聲明兩個具有相同名稱的不同變量。 您只是重新聲明已存在的變量。

將其更改為classCt ,或者執行我的操作並將變量j (依此類推)用於嵌套循環迭代器:

var i, j, k, l;
for(i = 0; i < 10; i++){
    for(j = 0; j < 10; j++){
        for(k = 0; k < 10; k++){
            for(l = 0; l < 10; l++){
            }
        }
    }
}

您只在一個范圍內工作,即使您使用var關鍵字,循環也不會創建它自己。 您只是在當前功能范圍內覆蓋您的i變量,例如:

for (var i = 0; i < 10; i++) {
        for (var i = 5; i < 10; i++) {
            console.log(i);
        }
}

將只打印5,6,7,8,9。

如果你想創建一個新的范圍,你必須使用通常在javascript中完成的函數來完成它:

for (var i = 0; i < 10; i++) {
    (function(i) {
        for (var i = 5; i < 10; i++) {
            console.log(i);
        }
    })(i)
}

這將在他們自己的線上打印5,6,7,8,9 10次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM