2012-05-31 45 views
2

我想有一些變量,我的for循環在函數作用域(而不是全局)內使用。for循環內函數(新手)

我試圖包裹for循環這樣的功能裏面,但它會導致控制檯錯誤:

function() { 
    var data = livingroomTableData; 
    for(var i = data[0]; i < data[1]; i++) { 
     var elemvalue = data[2] + format(i) + ".png"; 
     livingroomTableArray[i] = elemvalue; 
    } 
} 

我想數據變量只有在這裏面for循環livingroomTableData的值(不是全局)。在其他循環中,我將向數據變量中輸入一個不同的變量。

哦,是的,你可能會說,我是一個總新手。 :S

+0

我認爲「livingroomTableData」是一個數組? – verisimilitude

+1

你有livingroomTableData然後livingroomTableArray - 這些不同的對象? – duncan

+0

你已經實現了你想要的''data'作爲函數的本地方面。你得到什麼控制檯錯誤?請注意,在for循環條件下,除非'data [0]'是一個數字,否則在for循環中的代碼第一次運行後,'i ++'會導致錯誤。 –

回答

1

JavaScript中只有函數作用域,塊作用域不存在,所以你不能讓變量只在for循環中。你可以做的是創建一個函數範圍。

代碼例如:

(function(livingroomTableData) { 
    var data = livingroomTableData; 
    //... the rest code 
})(livingroomTableData); 
+0

呃?他不是已經在函數裏面獲得了'data'嗎? –

+0

@ PaulD.Waite請閱讀他的代碼,他只是將代碼包裝在一個函數中,這是行不通的。 – xdazz

+0

這一個做了我想要的,謝謝! –

1

問題是這樣的線:

for(var i = data[0]; i < data[1]; i++) { 

這意味着,從i作爲數組的第一個元素,執行代碼的循環,在每次運行結束時遞增i直到i不小於data的第二個元素。

我會重寫它給你看一個工作版本,但它不清楚你實際想要做什麼。

0
function() { 
    for(var i = 0; i < livingroomTableData.length; i++) { 
     var data = livingroomTableData[i]; 
     //your code here... 
    } 
}