![](/img/trans.png)
[英]Re-assign/declare a const variable in a JavaScript for-loop and save it more than one time with different values?
[英]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.