- Objective:
# 概念阐释
## 语义
没有循环次数上限,可以一直循环下去,只要不加任何条件(比如`counterTwo < 4`),`do...while`相当于家了`break`关键字的`for`循环。
## 语法
### `while`
```js
let n = 0;
while (n < 3) {
n++;
console.log(n);
}
//console和n++的上下位置调换会得到不同结果,console在上会先print 0。
```
### `do...while`
```js
var result = '';
var i = 0;
do {
i += 1;
result += i + ' ';
} while (i < 5);
document.getElementById('example').innerHTML = result;
```
# 实例
```js
const fruits = ['apple', 'banana', 'orange', 'grape', 'mango'];
let selectedFruit;
while (selectedFruit !== 'orange') {
selectedFruit = fruits[Math.floor(Math.random() * fruits.length)];
console.log(`Selected fruit: ${selectedFruit}`);
}
```
目的:直到水果为橘子时停止循环,所以每次刷新的结果,结尾都为`orange`。
`selectedFruit`为空值。当`selectedFruit`不等于`orange`时,`selectedFruit`等于`fruits`变量的随机数组。
# 相关内容
# 问题
1. [用while循环解答](https://www.codecademy.com/courses/introduction-to-javascript/lessons/loops/exercises/while) 随机抽牌,直到抽取到spade为止。
🌟🌟🌟
```js
const cards = ['diamond', 'spade', 'heart', 'club'];
```
2. [Do...While Statements]( https://www.codecademy.com/courses/introduction-to-javascript/lessons/loops/exercises/do-while-statement) 用`while`和`do...while`都写一遍,看不同。
# 问题答案
```js
const cards = ['diamond', 'spade', 'heart', 'club'];
let currentCard;
while(currentCard!=='spade'){
currentCard=cards[Math.floor(Math.random()*cards.length)];/*直到出现spade,循环停止,random()中不需要传递参数*/
console.log(currentCard);
};
//结果1
Output1:
club
diamond
heart
diamond
heart
club
club
heart
spade
//结果2
spade
//还有其他各种结果
// 用for循环是一样的
for(let currentcard; currentcard !== 'spade';){
currentcard = cards[Math.floor(Math.random()*4)]
console.log(currentcard);
};
```
这道题不是为了make a list,所以不需要i<10这样的条件,这道题的意思是说currentCard为spade时循环停止,反过来说就是当currentCard不等于spade时一直随机循环其他3种牌。
# 参考资料