2020-10-06 23:10:08 +05:30

3.0 KiB
Raw Blame History

id, challengeType, videoUrl, forumTopicId, title
id challengeType videoUrl forumTopicId title
5a2efd662fb457916e1fe604 1 https://scrimba.com/c/cDqWGcp 301172 do...while 循环

Description

这一节我们将要学习的是do...while循环,它会先执行do里面的代码,如果while表达式为真则重复执行,反之则停止执行。我们来看一个例子。
var ourArray = [];
var i = 0;
do {
  ourArray.push(i);
  i++;
} while (i < 5);

这看起来和其他循环语句差不多,返回的结果是[0, 1, 2, 3, 4]do...while与其他循环不同点在于,初始条件为假时的表现,让我们通过实际的例子来看看。 这是一个普通的 while 循环,只要i < 5,它就会在循环中运行代码。

var ourArray = []; 
var i = 5;
while (i < 5) {
  ourArray.push(i);
  i++;
}

注意,我们首先将i的值初始化为 5。执行下一行时注意到i不小于 5循环内的代码将不会执行。所以ourArray最终没有添加任何内容,因此示例中的所有代码执行完时,ourArray仍然是[]。 现在,看一下do...while循环。

var ourArray = []; 
var i = 5;
do {
  ourArray.push(i);
  i++;
} while (i < 5);

在这里,和使用 while 循环时一样,我们将i的值初始化为 5。执行下一行时没有检查i的值,直接执行花括号内的代码。数组会添加一个元素,并在进行条件检查之前递增i。然后,在条件检查时因为i等于 6 不符合条件i < 5,所以退出循环。最终ourArray的值是[5]。 本质上,do...while循环确保循环内的代码至少运行一次。 让我们通过do...while循环将值添加到数组中。

Instructions

将代码中的while循环更改为do...while循环,实现数字 10 添加到myArray中,代码执行完时,i等于11

Tests

tests:
  - text: 你应该使用<code>do...while</code>循环。
    testString: assert(code.match(/do/g));
  - text: <code>myArray</code>应该等于<code>[10]</code>。
    testString: assert.deepEqual(myArray, [10]);
  - text: <code>i</code>应该等于<code>11</code>。
    testString: assert.deepEqual(i, 11);

Challenge Seed

// Setup
var myArray = [];
var i = 10;

// Only change code below this line
while (i < 5) {
  myArray.push(i);
  i++;
}

After Test

if(typeof myArray !== "undefined"){(function(){return myArray;})();}

Solution

var myArray = [];
var i = 10;
do {
  myArray.push(i);
  i++;
} while (i < 5)