2015-12-04 19 views
-2

該函數來自於書籍「Eloquent Javascript」,第3章,函數。Javascript用於循環的公共語言翻譯

我不明白腳本的行爲。

這裏是一個「循環」一個不可能的任務,使計數值等於0和小於0

當時我認爲這將阻止該程序的開始,但是程序很聰明。它如何跨越這個循環。 這裏是片段:

var power = function (base, exponent) { 
    var result = 1; 
    for(var count = 0; count < exponent; count ++) { 
//repeat as many as needed the self multiplication. 
    console.log("count = ", count); 
     result *= base; 
     console.log(result); 

    } 
    return result; 
}; 
console.log("finally we get the number ", power(2, 0)); 
/* A little question with exponent = 0 
Why is that not an error. It is impossible to initiate 
with count = 0 && count < exponent. 
Weird.*/ 

在repl.it輸出

Native Browser JavaScript 

finally we get the number 1 
+0

即使程序知道這是不可能的,所以它跳過for循環並返回'1',這是for循環之前的init。 – fuyushimoya

+0

@fuyushimoya當然,但有可能瞭解如何? – kouty

+1

for循環的條件部分是'count fuyushimoya

回答

0

由於count < exponent或者更確切地說是0 < 0false,因此該循環不運行,並將其返回的result當它的值被定義爲1

var result = 1; 
for(var count = 0; false; count ++) { 
    // This doesn't run 
} 
return result; // So it's still 1 
0

感謝fuyushimoya,我翻閱和:

循環中的第一個語句來所謂的「結果」變量初始化後,

我錯在認爲for循環的括號內的文字表示:

我們有一個計數值數組:[第一個是0,最後一個是指數-1]。 正如我在索引0所說的,計數項目是「0」,並且這個數組的長度是「指數」。因此,如果數組爲空,則該語句不能爲真,因爲索引0 dosn't不存在,因爲程序將停止。

但是現在我終於明白了:

內部的for循環括號中的文字說: 如果計數的higest值比指數小,小的是0, 那麼我們將增加的價值結果爲:result * base。 - 但在功率(2,0)的情況下,條件未被驗證,則沒有增量。 稱爲「結果」的值仍處於初始狀態,即在循環開始之前。