无尽的循环 - 不知道为什么?

时间:2013-06-20 18:32:16

标签: javascript regex

有谁能告诉我为什么这个脚本会导致无限循环?

    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/>");
}

3 个答案:

答案 0 :(得分:5)

做{没有p}而(以p为条件)显然会继续运行。你的意思是:

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

答案 1 :(得分:2)

每次循环时都不会改变P. P将始终是您进入循环之前的状态

答案 2 :(得分:0)

是的,我认为正则表达式没有按照你的想法做到。 \ s {9}将连续搜索9个空格。正则表达式似乎是一个非常难以使用的工具,因此我使用split来制作我认为你想要的东西,它似乎已经熟悉了。

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/>");
}

也许?