- 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种牌。 # 参考资料