2012-01-23 35 views
2

任何人都可以在FOR語句中解釋逗號運算符嗎?FOR循環中的逗號運算符,這是如何工作的?

function funct_1(c){ 
    for (var a = x, e = y; 0 < c;){ 
     var p = c/2; 
     var c = c/10; // wtf, it is already defined as function argument!! 
    } 
} 

此外,像「A ++」的最後一條語句似乎缺少,我從來沒有見過這樣的事。那是什麼意思?謝謝!

+1

這不是JavaScript, – 2012-01-23 02:47:06

+0

@amnotiam那是什麼呢?如果需要,我可以正確標記它。 –

+0

不確定。逗號將在JS中工作,但JS沒有靜態類型的變量。 – 2012-01-23 02:49:06

回答

2

逗號只是爲多個聲明添加了分隔符。換句話說,您的for循環設置爲a等於x,以及e等於y

至於缺少增量語句,它丟失的事實意味着for循環不會明確地增加任何變量。

+0

謝謝。循環裏還有'c'的另一個定義。 var c = c/10;如果c已經在代碼中早些時候聲明瞭,那怎麼可能呢?這是否意味着它被視爲一個新變量,並且舊的c在新定義之後的循環內被忽略? – user1015551

+0

@ user1015551不是真的。它不會將'c'視爲一個新變量,它只是將'c/10'的值賦給'c'。換句話說,如果'c'等於'200',並且你說'c = c/10;',那麼你基本上是在說'c = 200/10;'。合理? – 2012-01-23 02:58:28

+0

是的,謝謝你。那爲什麼代碼在循環內部有'var c ='而不是簡單的'c ='。在這種情況下使用var是否有其他含義,或者它可能不在那裏? – user1015551

0

在C,C++,和JavaScript(也許C#)的逗號操作是這樣的:

comma_operator(statement_1, statement_2) { 
    execute statement_1 
    return statement_2 
} 

所以,在你的循環,它初始化兩個整數值,ae,而被設定爲了xy。沒有增量,因爲循環與c進行比較,該值可能設置在循環內的某處。

+1

不知道C或C++,但逗號操作符像[this](http://es5.github.com/#x11)。 14)在JavaScript中。它分隔**表達式**,而不是語句。你可以編寫'var x,y;'這是一個語句,你不能寫'var x,var y;'這是兩個必須用分號隔開的語句。 – RobG

1

逗號只允許您在循環開始時初始化多個變量。而缺少增量運算符意味着循環內必須有一些腳本最終滿足終止條件,否則循環將永遠不會完成。

+0

謝謝!這是否意味着這裏沒有定義條件?或者條件是c <0? – user1015551

+0

@ user1015551條件被定義爲'0

+0

謝謝你,我欣賞它! – user1015551