zzzzy09

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
循环的标准

for (initializer; exit-condition; final-expression) {
  // code to run
}
关键字for,后跟一些括号。
在括号内,我们有三个项目,以分号分隔:
一个初始化器 - 这通常是一个设置为一个数字的变量,它被递增来计算循环运行的次数。它也有时被称为计数变量。
一个退出条件 -如前面提到的,这个定义循环何时停止循环。这通常是一个表现为比较运算符的表达式,用于查看退出条件是否已满足的测试。
一个最终条件 -这总是被判断(或运行),每个循环已经通过一个完整的迭代消失时间。它通常用于增加(或在某些情况下递减)计数器变量,使其更接近退出条件值。
一些包含代码块的花括号 - 每次循环迭代时都会运行这个代码。
<main>
    <p id="for_test"></p>
</main>


<script>
     var cats = ['Bill', 'Jeff', 'Pete', 'Biggles', 'Jasmin'];
     var info = 'My cats are called ';
     var para = document.querySelector('#for_test');
    //
    // for (var i = 0; i < cats.length; i++) {
    //     info += cats[i] + ',';
    // }
    // para.textContent = info
    for (var i = 0; i < cats.length; i++) {
      if (i === cats.length - 1) {
        info += 'and ' + cats[i] + '.';
      } else {
        info += cats[i] + ', ';
      }
    }
    para.textContent = info
</script>


<main>
    <label for="search"> Please by contact name:</label>
    <input id="search" type="text">
    <button>Search</button>
    <p></p>
</main>

使用break退出循环
如果要在所有迭代完成之前退出循环,可以使用break语句。 当我们查看switch语句时,我们已经在上一篇文章中遇到过这样的情况 - 当switch语句中符合输入表达式的情况满足时,break语句立即退出switch语句并移动到代码之后。

与循环相同 - break语句将立即退出循环,并使浏览器移动到跟随它的任何代码。
<script>
    //定义数组
    var contacts = ['Chris:2232322', 'Sarah:3453456', 'Bill:7654322', 'Mary:9998769', 'Dianne:9384975'];
    //声明变量
    var para = document.querySelector('p');
    var input = document.querySelector('input');
    var btn = document.querySelector('button');
    //EventTarget.addEventListener() 方法将指定的监听器注册到 EventTarget 上,当该对象触发指定的事件时,指定的回调函数就会被执行
    btn.addEventListener('click', function () {
        //获取输入内容
        var searchName = input.value;
        //清空 input.value 变量
        input.value = '';
        //将鼠标聚焦在input
        input.focus();
        //开始循环

        for (var i = 0; i < contacts.length; i++) {
            //以分号为分隔符 ,将每个字典 分割为数组,而进行获取 name
            var contactsName = contacts[i].split(':');
            if (searchName === contactsName[0]){
                para.textContent = contactsName[0] + '\'s number is ' + contactsName[1] + '.';
            break
            } else {
                para.textContent = 'Conttact not found.'
            }
        }
    });
</script>


使用continue跳过迭代
continue语句以类似的方式工作,而不是完全跳出循环,而是跳过当前循环而执行下一个循环。 我们来看另外一个例子,它把一个数字作为一个输入,并且只返回开平方之后为整数的数字(整数)。

<main>
    <label for="search"> Please intput a number:</label>
    <input id="search" type="text">
    <button>Submit</button>
    <p></p>
</main>


<script>
    var num = input.value;
    var para = document.querySelector('p');
    for (var i = 1; i <= num; i++) {
        //获取 i 的平方根
        var sqRoot = Math.sqrt(i);
        //判断 i 的平方根是不是一个整数
        if (Math.floor(sqRoot) !== sqRoot) {
            //如果不是跳过
            continue;
        }
        //如果是
        para.textContent += i + ' ';
    }



while语句和do ... while语句
for 不是JavaScript中唯一可用的循环类型。 实际上还有很多其他的,而现在你不需要理解所有这些,所以值得看几个人的结构,这样你就可以在稍微不同的方式识别出相同的功能。

首先,我们来看看while循环。 这个循环的语法如下所示:

initializer
while (exit-condition) {
  // code to run

  final-expression
}
var i = 0;

while (i < cats.length) {
  if (i === cats.length - 1) {
    info += 'and ' + cats[i] + '.';
  } else {
    info += cats[i] + ', ';
  }

  i++;
}

do...while循环非常类似但在while后提供了终止条件:
//do 中的代码总是要执行一次 ,才进行while 判断
var i = 0;

do {
  if (i === cats.length - 1) {
    info += 'and ' + cats[i] + '.';
  } else {
    info += cats[i] + ', ';
  }

  i++;
} while (i < cats.length);





<script>
    //两种方式实现相同效果
var output = document.querySelector('.output');

for (var i = 10; i >= 0; i--) {
var para = document.createElement('P');
output.appendChild(para);
if (i === 10 ) {
para.textContent = 'Countdown 10';
} else {
para.textContent = i;
}
}
var para = document.createElement('P');
output.appendChild(para);
para.textContent = 'Blast off!';
//  var output = document.querySelector('.output'); output.innerHTML = ''; var i = 10; while(i >= 0) { var para = document.createElement('p'); if(i === 10) { para.textContent = 'Countdown ' + i; } else if(i === 0) { para.textContent = 'Blast off!'; } else { para.textContent = i; } output.appendChild(para); i--; }

 

posted on 2020-11-09 14:45  zzzzy09  阅读(141)  评论(0编辑  收藏  举报