2012-06-19 85 views
0

所以我只是想知道爲什麼下面的代碼不起作用。我正在尋找一種將for循環放入變量的類似策略。爲什麼我不能將循環分配給變量?

var whatever = for (i=1;i<6;i++) { 
console.log(i) 
}; 

謝謝!

+1

你期望'whatever' for循環完成時包含哪些內容? –

+0

你如何期待這個工作?在那之後你想用你的一個變量來做什麼? – lanzz

+0

您可以將一個函數賦值給一個變量。因此,將循環包含在函數中:var test = function(){for(var i = 1; i <6; i ++){console.log(i);}};測試(); –

回答

5

因爲for循環是語句並且在JavaScript語句中沒有值。這根本不是該語言的語法和語義所提供的。

在某些語言中,每個語句都被視爲一個表達式(例如Erlang)。在其他情況下,情況並非如此。 JavaScript屬於後一類。

這有點像是問爲什麼馬有長長的絲尾和沒有翅膀。

編輯 —看到的東西,如下劃線庫或「現代」附加到Array原型的「地圖」和「減少」和「的forEach」功能。這些允許在表達式評估上下文中進行迭代操作(當然,費用昂貴)。

+0

你可以把你的循環放入一個函數,但是,這可能是你想要的。 – Ben

+0

@點,沒有翅膀?我不知道你一直在看什麼樣的馬。 :) –

0

你的問題是for循環不返回值。您可以構建具有足夠元素的數組來保存你的循環的所有迭代,然後分配給它的循環中:

arry[j++] = i; 
2

我想你尋找什麼是功能

var whatever = function(min, max) { 
    for (var i = min; i < max; ++i) { 
    console.log(i); 
    } 
} 

......後來......

whatever(1, 6); 

這種方法可以讓你封裝循環(或任何其他C頌,甚至聲明另一個函數)。

0

你可以這樣做,但似乎你可能想檢查匿名函數。隨着一個匿名函數,你可以這樣做:

var whatever = function(){ 
for (var i=1;i<6;i++) { 
    console.log(i); 
} 
}; 

然後

whatever(); //runs console.log(i) i times. 
+1

'whatever();'和'var i' – scriptin

相關問題