JS基础 -- while循环

/*
* 题:
* 向页面输出连续的数字
*
* 先不考虑连续输出数字,首先考虑的是向页面输出的话,在js中应该用哪个方法
* 要使用的是document.write()这个方法,这个在write()括号中输出文字或数字后,会在html的<body>中输出文字或数字
*
*/

        //  document.write(1);
        //  document.write(2);
                    //  效果自己创建一个项目去试试

/
/*
* 上面这样写之后,在html中所展现的是‘12’,这样的话不是很好的辨认,也不是我们所需要的,我们所需要的是1占一行,
* 2占一行这样排列,所以我们需要它们换行
* 那换行怎么做呢?
* js中‘\n’这个的确是换行,对于write(1)来说这个‘\n’来说是没有任何作用的,因为这个对于string来说可能是很有用的,
* 但write(1)可不行,得使用
这个换行标签,因为write(1)是向<body>内输出,在body中是需要写标签的,
* 所以在换行这个上只用
,不能使用‘\n’。
* 格式请看下面:
*/

        //  document.write(1 + '<br>');
        //  document.write(2 + '<br>');
        //  document.write(3 + '<br>');
        //  ......

/
/*
* 接下来要考虑的是如何连续输出??
* 对于连续输出的想法是不断的重复,这时会想到一个就是不断复制粘贴 document.write(1 + '
');,这样虽然能做到连续输出,
* 但是,这样写会不断的手动复制,粘贴完后还的保存、运行,这样不符合程序运行的规则。
*
* 在js中有个语句可以解决这个问题,这个语句就是 while循环 语句
* while语句:
* 通过循环语句可以反复的执行一段代码多次;
*
* while循环:
* - 语法:
* while(条件表达式){
* 语句...
* }
* - while语句在执行时,先多条件表达式进行求值判断,如果值为true,则执行循环体,循环体执行完毕以后,继续对表达式进行判断,
* 如果为true,则继续执行循环体,以此类推;
* 如果值为false,则终止循环体;
* ********************************
* 这里需要注意一个写法,这个写法会对我们的程序造成运行负担,也对用户体验造成困扰,这种写法我们叫它为 死循环;
* 就是下面这种写法,如果自己想尝试一下活不下心写了,那么恭喜你中大奖了,你会发现这个工具一直弹出窗口。
* 记住要想测试不要用下面的方法,就算你把alert(n++ +'
');这个注释掉了,你会发现开发工具会死掉,无论你是重启多少次电脑或者开发工具也是一样的
* 这时不要紧张,不要怕,这不是什么天大的事,天塌不下来,电脑系统也不会重装,你可以使用以下几个方法解决这个问题:
*
* Mac系统下:
* 不论你使用了什么HTML开发工具造成这样的问题,你只需要在电脑文件夹中找到你使用的开发工作创建的项目文件夹,找到你使用的文件夹
* 然后,使用Xcode打开造成问题的html文件或者js文件,打开后把while代码块注释掉,再然后就是重新启动你的HTML开发工具。
*
* win系统下:
* 不论你使用了什么HTML开发工具造成这样的问题,你只需要在电脑文件夹中找到你使用的开发工作创建的项目文件夹,找到你使用的文件夹
* 然后,系统带有可以写脚本的软件,应该是记事本具体自己去操作,只要能打开造成问题的html文件或者js文件,并且能修改和保存就行,
* 打开后把while代码块注释掉,再然后就是重新启动你的HTML开发工具。
*
* ps:他大爷的,刚刚自己在mac系统下测试的时候,习惯性写了alert()结果程序卡死,开发工具卡死,没办法只用Xcode打开问题的html文件,然后注释掉
* while代码块后,重启开发工具后才好;自己把自己恶心了一把。
*/

        // 死循环:
        //var n = 1;
        //while (true){
        //   alert(n++ +'<br>');
        //}

/
/*
* 虽然上面注释中已经提示过不要这么写,但是我相信一定有人不信这个邪非要这么写。
* 可以,不过,得加一句代码,那就是 break;
*
* break:结束语句或叫退出语句
* 加上这个就不会出现这个问题了,但是while只会执行一次
*
*/

        //  var n = 1;
        //  while (true){
        //      alert(n++ +'<br>');
        //      break;
        //  }

/
/*
* 如果想执行多次,又不想出现死循环,那该怎么写那???
* if判断,对,我们需要在while代码块中加一个 if判断就可以实现了,如下面代码一样:
*/

        //  var n = 0;
        //  while (true){
        //      document.write(n++ +'<br>');
        //      if (n == 10) {
        //          break;
        //      }
        //  }

/
/*
* 这样就可以有效的避免死循环,又能达到我们的要求执行多次。
* 这样写看起来挺好,但是,感觉代码有点多了,多的是if判断,那怎么才能不使用if判读就行实现执行多次哪?
* 首先,我们需要把while(true)中的true给去掉,这时你会觉得去掉了if和true,那该怎么写??
* 接下来就开始写了,
* 第一,把true去掉
* 第二,把if判断条件复杂或者写到while表达式中,也就是true原来的位置里
* 第三,把等等于换成大于等于
* 第四,把break去掉
* 这样就可以精简掉几句代码
*/

        //1.创建并初始化一个变量
        var n = 1;
        //2.在循环中设置一个条件表达式
        while(n <= 10) {
            //3.定义一个更新表达式,每次更新初始化变量
            document.write(n++ + '<br>');
            //这三个条件缺一不可
        }

/
/*
* 接下来在说一个while的近亲
*
* do...while循环
* - 语法
* do{
* 语句...
* }while(条件表达式)
*
* - 执行流程:
* do...while语句在执行时,会先执行do的循环体,当do循环体执行完毕以后,再对while后的条件表达式进行判断
* 如果结果为true,则继续执行do循环体,执行完毕继续对while后的条件表达式进行判断,以此类推。
* 如果结果为false,则终止循环。
* 说完了do循环的执行流程,接下来说一下while的执行流程,然后在看一下do循环和while循环的区别在哪里??
* - while执行流程:
* while (条件表达式)语句在执行时,会先对while后的条件表达式进行判断,如果结果为true。则执行while后面的循环体,
* 直到结果为false时,循环体才会终止循环;
*
* - do与while的区别:
* do循环是先执行循环体,然后执行对while条件表达式进行判断,如果结果为true,则继续执行do循环体。
* 还有要注意的是do循环是先执行循环体,然后才会对while的条件表达式进行判断,也就是说第一次执行时,不论while条件表达式的值是否为true,
* 都会输出do循环体内的语句。
*
* while循环是先对条件表达式进行判断,如果结果为true,才会继续执行循环体代码块。
* while循环在没有对条件表达式进行判断时,循环体代码块是不会先执行的。
*
* - 总结:总来说前者是先执行循环体代码块,然后才会对while的条件表达式进行判断,而while是先进行对条件表达式判读,然后才是执行循环体代码块。
*/

        var i = 1
        do {
            document.write(i++ + '- <br>');
        } while (i <= 10);

/
/*
* 最后再次提醒,在写循环时一定要避免死循环,除非必要情况,一定不要写。不然会对程序造成崩溃,内存也会崩溃
*/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,093评论 0 13
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,134评论 1 44
  • 基础 .NET概述 参考:http://www.cnblogs.com/yplong/p/3279934.html...
    donite阅读 1,606评论 0 8
  • 我是一个不认真洗脸的人。晚上经常有时因为太累,直接倒在床上呼呼大睡,做面膜也很少,更别说保养了。以前,别人会对我...
    心洁xinjie阅读 212评论 0 2
  • 这些年 我爬过很多座山 磨破了很多双鞋 喝了几万斤水 总会相信 翻过眼前的山 大海将会映入眼帘 可后来我还是失望了...
    燃烧已烬阅读 143评论 0 2