我在javascript中使用類似下面的代碼。這是錯的嗎?我可以在循環語句中定義函數嗎?
for(i=0;i<5;i++){
function somefunction(){
/*function code here*/
}
somefunction();//call that function inside the loop
}//end of for loop
我想我寫了一個代碼使用這個,我搞砸了一切。
我在javascript中使用類似下面的代碼。這是錯的嗎?我可以在循環語句中定義函數嗎?
for(i=0;i<5;i++){
function somefunction(){
/*function code here*/
}
somefunction();//call that function inside the loop
}//end of for loop
我想我寫了一個代碼使用這個,我搞砸了一切。
函數和變量在JavaScript的作用域到最近功能,而不是最近的塊({ ... }
)。
所以你不能在每個循環周圍定義不同的函數或變量,因爲你在同一個範圍內覆蓋相同的名字。
因此,在循環內部放置這樣的聲明是個壞主意,無論標準或實現是否允許您這樣做,因爲它只會誤導任何人閱讀代碼(很可能是您自己!)。
您可以在循環內創建一個匿名函數,但沒有更多的上下文,我無法給出一個如何幫助您的例子。
第一個問題:爲什麼你需要在循環的**內部定義**?另外,你是否試圖在循環之外訪問它? – PlasmaPower
我不確定,但使用匿名函數('var someFunction = function(){/ * function code here * /}')應該可以工作 – Markasoftware
您可以,但是*爲什麼*您想要這樣做?你認爲「我」的價值對你來說意想不到嗎? – alex