2013-05-04 217 views
0

我今天在javascript中閱讀了一段代碼,突然發現有這段代碼片段的情況。while(true)條件的意義是什麼?

add: function (value) { 
    var current = null; 
    if (this._root === null) { 
     this._root = node; 
    } else { 
     current = this._root; 

     while (true) { 
      // Some code goes here. 
     } 
    } 
} 

條件while(true)永遠是對的。它沒有進入我的腦海,爲什麼當條件放在這裏。

+2

有時,打破循環所需的邏輯非常複雜,以便用「break」語句將其放入循環體中更方便。需要額外的照顧,以確保總是有一些條件會打破循環。如果條件當然在循環的頭部,情況也是如此,但是當條件複雜時,可能會更容易錯過某些東西。 – 2013-05-04 23:55:41

回答

1

while(true)

將永遠執行,必須有一些邏輯內的無限 while循環終止。

至於爲什麼?,這是顯示一個無限循環的

for(;;){} 
+0

很酷,有趣的時候這將是錯誤的,直到if/else的整個邏輯返回一些東西.... http://www.nczonline.net/blog/2009/06/09/computer-science-in-javascript- binary-search-tree-part-1/[我正在查看添加功能]。 – Kevin 2013-05-04 23:49:56

+0

它永遠不會是* false *,當你找到插入新節點的位置時,你鏈接的代碼中的'break'語句將離開循環。 – 2013-05-04 23:52:46

1

緊隨while語句會在無限循環執行的代碼,除非你有邏輯裏面,要麼調用break,或return終止一個非常常見的方式循環。

if (value == "done") 
    break; 

if (value == "done") 
    return; 
1

在我看來,這是一個非常不好的做法。
您應該始終將條件綁定到條件循環中的布爾變量。這僅僅是因爲如果你使用變量,它的值可以稍後改變。從我所看到的,這看起來像一個無限循環。
但是,如果您仔細觀察該循環內的代碼,可能會發現一些條件,即if語句可能使用break語句來突破無限循環。