2013-06-20 68 views
-4

誰能告訴我爲什麼這個腳本會導致無限循環?無盡的循環 - 不知道爲什麼?

var words = ' '; 
var spaces = /\s{9}/; 
var p; 
p = spaces.test(words); 

do { 
    words = prompt("Test ", " "); 
} 
while (p != true); 

var array = words.split(" "); 
for(i = 0; i < array.length; i++) { 
    document.write(array[i] + "<br/>"); 
} 

回答

5

做{沒有p},而(條件p)顯然要永遠運行。你的意思是:

var words = ' ', spaces = /\s{9}/, p; 
do { 
    p = spaces.test(words); 
    words = prompt("Test ", " "); 
} 
while (!p); 
+1

...當且僅當p當你進入循環 – occulus

+1

當然是錯誤的,但它顯然會是,因爲''不會匹配9個空格。 –

+0

@ Mike'Pomax'Kamermans感謝邁克,仍然卡住了。當我看到腳本時,對我來說,它說「檢查是否有9個空格,然後繼續,直到/除非沒有9個空格...重新運行循環」。但我的瀏覽器並沒有這樣看。我在Mac OS上使用Safari ......對於這個問題應該不重要。 – Adam

2

你每次循環都沒有改變P. P將永遠是你進入循環之前的樣子

0

對,我認爲正則表達式不會做你認爲它的作用。 \ s {9}將連續搜索9個空格。正則表達式似乎是一個很難使用的工具,所以我用分裂來做出我認爲你想要的東西,看起來你已經熟悉它了。

var words = ' '; 
var p; 

do { 
    words = prompt("Test", ""); 
    p = words.split(" "); 
} 
while (p.length != 9); 

var array = words.split(" "); 
for(i = 0; i < array.length; i++) { 
    document.write(array[i] + "<br/>"); 
} 

也許吧?

+0

仍然陷在循環中 – Adam

+0

您可以擴展爲什麼請求者被困在一個循環中,以及該解決方案如何解決這個問題? –

+0

@aland謝謝,仍然似乎卡住了。我將不得不繼續努力。你在這裏有什麼合理的,但它似乎沒有合作。 – Adam