JavaScript_流程控制简介02

选择结构:switch

在JavaScript中,选择结构共有两种方式:①if语句;②switch语句。上一节我们介绍了if语句,这一节我们再来给大家介绍一下switch语句。

语法:

switch(判断值)

{

case 取值1:

语块1;break;

case 取值2:

语块3;break;

……

case 取值n:

语块n;break;

default:

语句块n+1;

}

说明:

从英文意思来看,switch是“开关”,case是“情况”,break是“断开”,default是“默认”。小伙伴们根据英文意思来理解就很容易了。

switch语句会根据“判断值”来判断,然后来选择使用哪一个“case”。如果每一个case的取值都不符合,那就执行default的语句。还是先来看一个例子,这样理解快一点。

举例:

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8" />

<script>

var day = 3;

var week;

switch (day)

{

case 1:

week = "星期一"; break;

case 2:

week = "星期二"; break;

case 3:

week = "星期三"; break;

case 4:

week = "星期四"; break;

case 5:

week = "星期五"; break;

case 6:

week = "星期六"; break;

default:

week = "星期日";

}

document.write("今天是" + week); //输出今天是星期几

</script>

</head>

<body>

</body>

</html>

分析:

在switch语句中,系统会从第一个case开始判断,直到找到满足条件的case退出,然后后面的case就不会执行了。

对于switch和case,小伙伴都知道是怎么回事,却不太理解break和default有什么用。下面我们通过两个例子来理解一下。

举例:break语句

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8" />

<script>

var day = 5;

var week;

switch (day)

{

case 1:

week = "星期一";

case 2:

week = "星期二";

case 3:

week = "星期三";

case 4:

week = "星期四";

case 5:

week = "星期五";

case 6:

week = "星期六";

default:

week = "星期日";

}

document.write(week); //输出今天是星期几

</script>+

</head>

<body>

</body>

</html>

分析:

day的值为5,为什么最终输出的是“星期天”呢?其实,这就是缺少break语句的结果。

实际上,在switch语句中,首先判断case的值是否符合day的值。因为day的值为5,因此会执行“case 5”这一分支。但是,由于没有在“case 5”后面加break语句,因此程序还会把后面的“case 6”以及“default”都执行了,后面week的值会覆盖前面week的值,因此最终输出的是“星期天”。

break语句用于结束switch语句,从而使JavaScript仅仅执行对应的一个分支。如果没有了break语句,则该switch语句中“对应的分支”被执行后,后面的分支还会继续被执行。因此,对于switch语句,一定要在每一个case语句后面加上break语句。

举例:default语句

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8" />

<script>

var n = 10;

switch (n)

{

case 1:

document.write("你选择的数字是:1"); break;

case 2:

document.write("你选择的数字是:2"); break;

case 3:

分析:

在这个例子中,我们使用default来定义默认情况,因此无论n的值是10、12还是100,最终执行的也是default这一个分支。

此外,case后面的取值不仅仅是数字,也可以是字符串。switch语句在实际开发中是非常重要的,建议大家认真掌握。

循环结构:while

在JavaScript中,循环语句指的是在“满足某个条件下”循环反复地执行某些操作的语句。这就很有趣了,现在像“1+2+3+…+100”“1+3+5…+99”这种计算就可以轻松用程序实现了。

在JavaScript中,循环语句共有以下三种。

while语句

do...while语句

for语句

这一节,我们先来给大家介绍一下while语句的用法。

语法:

while(条件)

{

//当条件为true时,循环执行

}

说明:

如果“条件”返回为true,则会执行“{}”内部的程序。当执行完“{}”内部的程序后,会再次判断“条件”。如果条件依旧还是true,则会继续重复执行大括号中的程序……循环执行直到条件为false才结束整个循环,然后再接着执行while语句后面的程序。

举例:计算1+2+3+…+100的值

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8" />

<script>

var n = 1;

var sum = 0;

//如果n小于等于100,则会执行while循环

while (n <= 100)

{

sum=sum+n;

n=n+1;

}

document.write("1+2+3+…+100 = " + sum);

</script>

</head>

<body>

</body>

</html>

分析:

变量n用于递增(也就是不断加1),初始值为1。sum用于求和,初始值为0。对于while循环,我们逐步来给大家分析。

第一次执行while循环,sum=0+1,n=2;

第二次执行while循环,sum=0+1+2,n=3;

第三次执行while循环,sum=0+1+2+3,n=4;

……

第100次执行while循环,sum=0+1+...+100,n=101。

记住,每一次执行while循环之前,我们都需要判断是否满足条件,如果满足,则继续执行while循环,如果不满足,则退出while循环。

当我们第101次执行while循环时,由于此时n=101,而判断条件n<=100返回false,此时while循环不再执行(也就是退出while循环)。由于退出了while循环,接下来就不会再循环执行while中的程序,而是执行while后面的document.write()了。

举例:计算1+3+5+…+99的值

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8" />

<script>

var n = 1;

var sum = 0;

//如果n小于100,则会执行while循环

while (n < 100)

{

sum += n; //等价于sum=sum+n;

n += 2;  //等价于n=n+2;

}

document.write("1+3+5+…+99 = " + sum);

</script>

</head>

<body>

</body>

</html>

分析:

在这个例子中,while循环的条件“n < 100”改为“n<=99”也是一样的,

因为两个条件是等价的。当然,上一个例子“n<=100”其实也等价于“n<101”。我们可以思考一下为什么?

此外,sum += n;等价于sum=sum+n;,而n+=2;等价于n=n+2;。

在实际开发中,我们一般使用简写形式,所以大家一定要熟悉这种赋值运算符的简写形式。

至于while循环是怎么进行的,可以对比一下上一个例子的具体流程,自己理清一下思路,慢慢消化一下。对于while语句,我们还需要特别注意以下两点。

循环内部的语句一定要用“{}”括起来,即使只有一条语句。

循环内部中,一定要有可以结合“判断条件”来让循环可以退出的语句,

一般来说都是i++、i+=2之类的。如果没有“判断条件”和“退出语句”,循环就会一直运行下去,变成一个“死循环”。

举例:

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8" />

<script>

while (true)

{

alert("绿叶,初恋般的感觉~")

}

</script>

</head>

<body>

</body>

</html>

分析:

这就是最简单的“死循环”,因为判断条件一直为true,因此会一直执行while循环,然后会不断弹出对话框。小伙伴可以试一下,会发现没法停止对话框弹出。想要关闭浏览器,我们可以按下“Shift+Ctrl+Esc”打开任务管理器来关闭。

在实际开发中,我们一定要避免“死循环”的出现,因为这是很低级的错误。

循环结构:do…while

在JavaScript中,除了while语句,我们还可以使用do…while语句来实现循环。

语法:

do

{

}while(条件);

说明:

do…while语句首先是无条件执行循环体一次,然后再判断是否符合条件。如果符合条件,则重复执行循环体;如果不符合条件,则退出循环。

do…while语句跟while语句是非常相似的,并且任何一个都可以转换成等价的另外一个。

do…while语句结尾处括号后有一个分号(;),该分号一定不能省略,这是初学者最容易忽略的一点,大家一定要记得。

举例:

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8" />

<script>

var n = 1;

var sum = 0;

do

{

sum += n;

n++;

}while (n <= 100);

document.write("1+2+3+…+100 = " + sum);

</script>

</head>

<body>

</body>

</html>

分析:

将这个例子与上一节的例子对比,我们可以总结出以下两点。

while语句和do...while语句是可以互相转换的,对于这两个,我们掌握其中一个就可以了。

while语句是“先判断后循环”,do...while语句是“先循环后判断”,这是两者本质的区别。

在实际开发中,我们一般都是用while语句,而不是用do...while语句,主要是do...while语句会先无条件执行一次循环,有时候用得不好的话,这个特点会导致执行了一次不该执行的循环。也就是说,我们只需要重点掌握while语句就可以了。

循环结构:for

在JavaScript中,除了while语句以及do…while语句,我们还可以使用for语句来实现循环。

语法:

for(初始化表达式;条件表达式;循环后操作)

{

}

说明:

初始化表达式,一般用于定义“用于计数的变量”的初始值;条件表达式,表示退出循环的条件,类似while中的条件,如n<100;循环后操作,指的是执行循环体(也就是“{}”中的程序)后的操作,类似于while中的n++之类的。

对于初学者来说,仅仅看上面的语法是无法理解的,我们还是先来看一个例子。

举例:

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8" />

<script>

for(var i=0;i<5;i++ )

{

document.write(i+"<br/>");

}

</script>

</head>

<body>

</body>

</html>

分析:

在for循环中,首先定义一个用于计数的变量i,i的初始值为0。然后定义一个判断条件i<5,也就是说只要i<5就会执行for循环中的程序。最后定义一个循环后的表达式i++,也就是说每次循环之后都会进行一次i++。

第1次执行for循环

初始化:var i = 0;

判断:i<5(i的值为0,返回true)

输出:0

更新:i++(执行后i=1)

第2次执行for循环

判断:i<5(i的值为1,返回true)

输出:1

更新:i++(执行后i=2)

……

第5次执行for循环

判断:i<5(i的值为4,返回true)

输出:4

更新:i++(执行后i=5)

第6次执行for循环

判断:i<5(i的值为5,返回false)。由于i<5返回false,因此条件不满足,退出for循环。

当然,这个例子我们也可以使用while或者do…while来实现。因为程序是活的,不是死的,想要实现某一个功能,方式是多种多样的,我们要清楚这一点。

举例:

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8" />

<script>

for (var i = 2; i < 5; i++)

{

var str = "<p style='font-size:" + i * 5 + "px'>欢迎来到绿叶学习网</p>";

document.write(str);

}

</script>

</head>

<body>

</body>

</html>

分析:

这里小伙伴要特别注意了,这里的for循环,变量i的初始值是2而不是1。在循环体中,我们使用“拼接字符串”(也就是用加号拼接的方式)来构造一个“HTML字符串”。大家好好琢磨一下这个例子,非常有用。

很多没有编程基础的初学者在for循环的学习中都会卡一下,对这种语法感到很难理解。语法记不住没关系,等你要用的时候,回来这里对着这几个例子“抄”过去,然后多写两次,自然就会了。

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

推荐阅读更多精彩内容