// 当前有一个随机数,是生成100-999的随机数值
        // 需要生成数值666,需要知道循环了多少次,才生成的666这个数值
        // 我们可以通过循环来实现
        // 每次循环,执行生成一个随机数,
        // 如果这个数值不是 666 我们就继续执行循环 并且给记录次数变量数值+1
        // 当数值是666时,停止循环,变量中的数值就是记录的循环次数
        // 定义一个变量,最初的数值是0
        // 每次循环,给num赋值一个随机数,如果随机数是666,我们停止循环
        var num = 0;
        // 定义一个循环变量,实际上与真正执行的循环次数是没有关系的
        // 只是便于记录循环次数
        var i = 0;
        // 当 num数值不是666时,我们进入循环
        while(num != 666){
            // 给 num 赋值一个 100-999 之间的随机数
            num = parseInt(Math.random()*(999+1-100) + 100 );
            // 每执行一次循环,i++,记录一次循环次数
            i++;
        }
        // 循环终止之后,执行的程序
        // 输出num,见识是否是666
        // 输出i,查看循环次数是多少次
        console.log(num);
        console.log(i);
        // 总结:
        // 观察这个循环,压根儿就没有定义循环变量
        // 判断进入循环的条件,与循环变量也没有任何关系
        // 也就是没有循环变量,我们的循环也能正常执行
        // 也就是循环次数,与循环变量无关
        // 实际上我们根本不清楚,循环到底需要执行多少次
        // 这样的循环我们就称为未知循环次数的循环
        // 此种情况,我们的循环变量实际上不会影响循环次数,往往用于记录循环次数
        // 说明:
        // 一般的while循环
        // var i = 1 while(i<=5){console.log)() ; i++};
        // 判断进入循环的条件是 i<=5 循环终止时, i 实际数值是 6
        // 现在是不确定循环次数的循环
        // var i = 0 while(num!=666){i++} ;
        // 此时 决定循环次数,是num的数值,与 i的数值是无关的
        // 如果第一次就生成了666,执行i++,i的数值正好是1
        // 需要写成for循环
        // for循环实际与while循环的代码是一抹一样的,只是顺序等不同
        var num = 0;
        for( var i = 0; num != 666; i++ ){
            num = parseInt(Math.random()*(999+1-100) + 100 );
        }
        console.log(num);
        console.log(i);
        // 未知循环次数的程序,更适合使用while循环来实现
        // 非常可惜,我们现在只能完成简单的demo,这个效果还是不是很明显
        // 但是我们要牢牢记住
        // for循环,更适合循环的嵌套
        // while循环,更使用未知循环次数的循环
        // 他们两个有一定是可以相互转化的

while适用于不确定循环次数的更多相关文章

  1. python学习第三次

    while循环 表示当条件成立的时候就循环适用于不知道具体循环次数,但是确定在某个条件成立的情况下就循环while语法:while 条件表达式:语句块#另一种表达方式while 条件表达式:语句块1e ...

  2. 什么是JavaScript循环结构?

    ㈠什么是循环结构 ⑴什么是循环? 反复一遍又一遍的做着相同(相似)的事情 ⑵循环中的两大要素 ①循环条件:什么时候开始,什么时候结束 ②循环操作:循环体,循环过程中,干了什么 ㈡循环结构—while循 ...

  3. 3-Java逻辑控制语句

    目录 Java选择结构 Java循环结构 return.break.continue Math.random()的使用和条件运算符 1.Java选择结构 1.1.if(布尔表达式)单选结构 - 当布尔 ...

  4. 物联网框架SuperIO 2.2.9和ServerSuperIO 2.1同时更新,更适用于类似西门子s7-200发送多次数据,才能读取数据的情况

    一.解决方案 二.更新内容 1.修改IRunDevice接口,把void Send(io,bytes)改成int Send(io,bytes).2.修改网络控制器,发送数据不直接使用IO实例,改为使用 ...

  5. 华为荣耀6 H60-L02/L12(联通版)救砖包【适用于无限重启】

    本帖最后由 HOT米粒 于 2014-11-16 20:43 编辑 华为荣耀6 H60-L02/L12(联通版)救砖包[适用于无限重启]说明: 1.本工具包用于华为荣耀6 H60-L02(联通版): ...

  6. SQL SERVER 9003错误解决方法 只适用于SQL2000

    SQLSERVER 9003错误解决方法 只适用于SQL2000 (只适用于SQL2000) "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft S ...

  7. ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程

    今天使用PL/SQL Developer连接到一台新的测试服务器时,遇到ORA错误:ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程.对应的监听日志文件里面错误为TNS-1252 ...

  8. 1、SQL可搜索可排序可分页存储过程, 2、范围内的随机时间 适用于sql 2008以上

    -- ============================================= -- Author: 蜘蛛王 -- Create date: 2015-10-29 -- Descri ...

  9. smarty模板中获得循环次数

    在smarty中可以有两种写法来获得循环次数(当然lz只会这两种:>,要是有大神会有其他的,欢迎补充) 写法一: {section name=loop loop=3} {$smarty.loop ...

  10. C#更改文件访问权限所有者(适用于各个Windows版本)

    前面也提到了,前段时间在做Online Judge系统,在正式上线前有几个比较老的版本,其中第一个版本使用ACL来控制权限以确保安全(但是这个版本完全建立在IIS上,所以这样做是没效果的),遇到了一些 ...

随机推荐

  1. boltdb 介绍

    介绍 BoltDB 是一个用 Go 语言编写的嵌入式键/值数据库.以下是关于 BoltDB 的一些基本介绍: 键/值存储: BoltDB 为应用程序提供了简单的键/值存储接口. 事务: BoltDB ...

  2. async与await暂停作用

    1. async function Request () { await new Promise(res => { setTimeout(() => { console.log(1) re ...

  3. 关于mac使用figma以及企业微信3.1.18版本,CPU系统占用率飙升至70%

    问题描述 使用一段时间正常,不知道是修改了什么设置,还是有什么软件冲突,导致cpu使用率极高 系统进程中有一个 kernel_task 占用了大量的cpu 并且该占用并不会消失,只要figma打开就会 ...

  4. 欢迎 Llama 3:Meta 的新一代开源大语言模型

    介绍 Meta 公司的 Llama 3 是开放获取的 Llama 系列的最新版本,现已在 Hugging Face 平台发布.看到 Meta 持续致力于开放 AI 领域的发展令人振奋,我们也非常高兴地 ...

  5. Alibaba Cloud Linux 2 LTS 正式发布,提供更高性能和更多保障

    Alibaba Cloud Linux 2 LTS版本发布后,阿里云将会为该版本提供长达5年的软件维护.问题修复服务.从2019-03-27开始到2024-03-31结束.包括: 免费的服务和支持:A ...

  6. Go Mysql Driver 集成 Seata-Golang 解决分布式事务问题

    简介: 2020 年 4 月,我们开始尝试实现 go 语言的分布式事务框架 Seata-Golang.众所周知,Seata AT 模式以无业务代码侵入的特点,被广大开发者推崇.Java 版 Seata ...

  7. [Blockchain] Cosmos Starport 安装的三种方式

    官方二进制包方式: # 下载 starport 二进制到 /usr/local/bin $ curl https://get.starport.network/starport! | bash   # ...

  8. [SVG] JS 动态加载 svg 修改 svg 属性

    svg 概念一览: https://javascript.ruanyifeng.com/htmlapi/svg.html加载 svg: // for example: $('body').load(' ...

  9. java 高并发下超购问题解决

    //@desc:java 高并发下锁机制初探 //@desc:码字不宜,转载请注明出处 //@author:张慧源  <turing_zhy@163.com> //@date:2021/1 ...

  10. 【强化学习】Markov Decision processes【二】

    目录 Markov Decision processes Markov Process Markov reward process Markov Decision processes 马尔可夫决策过程 ...