为孩子们挑战JavaScript。第6章。什么是正确的答案

时间:2017-06-01 21:37:40

标签: javascript for-loop while-loop

在第6章末尾的“儿童JavaScript”中,创建随机字符串生成器存在这一挑战,从var alphabet =“abcdefghijklmnopqrstuvwxyz”中取出的字母; 在本书中,autor专门请求使用我做的WHILE循环。

我发现正确的答案需要FOR循环,如下所示:

var alphabet = "abcdefghijklmnopqrstuvwxyz";
var randomString = "";
var stringLength = 6;

for (var i = 0; i < stringLength; i++) {
  randomString += alphabet[Math.floor(Math.random() * alphabet.length)];
}

console.log(randomString);

我的问题:是否可以对WHILE循环进行相同的操作?

3 个答案:

答案 0 :(得分:3)

每个for循环都可以写成while循环。通常,您的for循环描述符有三个表达式:初始化,条件和某种增量。我们称这些为abc

然后这个:

for (a; b; c) {
    // ...
}

相当于:

a;
while (b) {
    // ...
    c;
}

注意:使用let时可能存在细微差别。

答案 1 :(得分:1)

当然,但你必须自己管理增加循环计数器:

var i = 0;
while (i < stringLength) {
  randomString += alphabet[Math.floor(Math.random() * alphabet.length)];
  i++;
}

恕我直言,for循环更合适。

答案 2 :(得分:1)

是的,如果以正确的方式实施,您也可以这样做。检查randomString.length并将其与您选择的stringLength进行比较。

&#13;
&#13;
var alphabet = "abcdefghijklmnopqrstuvwxyz";
var randomString = "";
var stringLength = 6;

while(randomString.length < stringLength){
  randomString += alphabet[Math.floor(Math.random() * alphabet.length)];
}

console.log(randomString);
&#13;
&#13;
&#13;