js 中循环语句的区别和用法

一 条件 语句

1 if语句

if 语句- 只有当指定条件为 true 时,使用该语句来执行代码

if...else 语句- 当条件为 true 时执行代码,当条件为 false 时执行其他代码

if...else if....else 语句- 使用该语句来选择多个代码块之一来执行

语法

if (条件)

{

只有当条件为 true 时执行的代码

}

else if  

if(条件){

只有当条件为true时执行的代码

} else if(条件){

当条件执行的代码

}else {

条件不执行的代码

}


2 switch语句

请使用 switch 语句来选择要执行的多个代码块之一。

语法

switch(n)

{

case 1:

执行代码块 1

break;

case 2:

执行代码块 2

break;

default:

n 与 case 1 和 case 2 不同时执行的代码

}

default 关键词

请使用 default 关键词来规定匹配不存在时做的事情:

实例

如果今天不是星期六或星期日,则会输出默认的消息:

vard=newDate().getDay();

switch(d)

{

case6:x="今天是星期六";

break;

case0:x="今天是星期日";

break;

default:

x="期待周末";}

document.getElementById("demo").innerHTML=x;

x的运行结果:期待周末;

二循环控制语句

JavaScript中提供了这些循环语句:

for statement

do...while statement

while statement

label statement

break statement

continue statement

for...in statement

for...of statement

1 while 语句

一个while语句只要指定的条件求值为真(true)就会一直执行它的语句块。一个 while 语句看起来像这样:

while (condition)

statement

如果这个条件变为假,循环里的statement将会停止执行并把控制权交回给 while 语句后面的代码。

条件检测会在每次statement执行之前发生。如果条件返回为真,statement会被执行并紧接着再次测试条件。如果条件返回为假,执行将停止并把控制权交回给 while 后面的语句。

要执行多条语句(语句块),要使用块语句 ({ ... }) 包括起来。

var n=0;

var x=3;

while(n<3){

n++;

x+=n

}

2 DO.....while 语句

do...while语句一直重复直到指定的条件求值得到假(false)。 一个 do...while 语句看起来像这样:

do

statement

while (condition);

statement在检查条件之间会执行一次。要执行多条语句(语句块),要使用块语句 ({ ... }) 包括起来。 如果condition为真(true),statement将再次执行。 在每个执行的结尾会进行条件的检查。当condition为假(false),执行会停止并且把控制权交回给 do...while 后面的语句。

例子

在下面的例子中, 这个 do 循环将至少重复一次并且一直重复直到i不再小于 5。

do{

i+=1;

consle.log(i);

}

while(i<5);

3 for语句

一个for循环会一直重复执行,直到指定的循环条件为fasle。 JavaScript的for循环和Java与C的for循环是很相似的。一个for语句是这个样子的:

for ([initialExpression]; [condition];

[incrementExpression])

statement

当一个for循环执行的时候,会发生以下事件:

如果有初始化表达式initialExpression,它将被执行。这个表达式通常会初始化一个或多个循环计数器,但语法上是允许一个任意复杂度的表达式的。这个表达式也可以声明变量。

计算condition表达式的值。如果condition的值是true,循环中的statement会被执行。如果condition的值是false,for循环终止。如果condition表达式整个都被省略掉了,condition的值会被认为是true。

循环中的statement被执行。如果需要执行多条语句,可以使用块({ ... })来包裹这些语句。

如果有更新表达式incrementExpression,执行它,然后流程回到步骤2。

4 for....in  语句

这个for...in语句循环一个指定的变量来循环一个对象所有可枚举的属性。JavaScript 会为每一个不同的属性执行指定的语句。

for (variable in object) {

statements

}

例子

下面的函数通过它的参数得到一个对象和这个对象的名字。然后循环这个对象的所有属性并且返回一个列出属性名和该属性值的字符串。

functiondump_props(obj,obj_name){varresult="";for(variinobj){result+=obj_name+"."+i+" = "+obj[i]+"
";}result+="


";returnresult;}

对于一个对象拥有 make 和 model 属性的 car 对象来说,执行结果是:

car.make=Fordcar.model=Mustang

数组

虽然用for...in来迭代Array元素很诱人,但是它返回的除了数字索引外还有可能是你自定义的属性名字。因此还是用带有数字索引的传统的for循环来迭代一个数组比较好,因为如果你想改变数组对象,比如添加属性或者方法,for...in语句迭代的是 自定义的属性而不是数组的元素。

for...ofstatementEdit

该新特性属于 ECMAScript 2015(ES6)规范,在使用时请注意浏览器兼容性。

for...of语句在可迭代的对象上创建了一个循环(包括Array,Map,Set, 参数对象(arguments) 等等),对值的每一个独特的属性调用一个将被执行的自定义的和语句挂钩的迭代。

for (variableofobject) {statement}

下面的这个例子展示了for...of 和for...in两种循环语句之间的区别。与for...in循环遍历的结果是数组元素的下标不同的是,for...of 遍历的结果是元素的值:

letarr=[3,5,7];arr.foo="hello";for(letiinarr){console.log(i);// logs "0", "1", "2", "foo"}for(letiofarr){console.log(i);// logs "3", "5", "7" // 注意这里没有 hello}

label 语句

一个label提供了一个可以让你引用到您程序别的位置的标识符。例如,你可以用 label 标识一个循环, 然后使用 break 或者 continue 来指出程序是否该停止循环还是继续循环。

label 语句的语法看起来像这样:

label :

statement

label的值可以是任何的非保留字的 JavaScript 标识符,statement 可以是任意你想要标识的语句(块)。

break语句

使用break语句来终止循环,switch, 或者是链接到 label 语句。

当你使用不带 label 的break时, 它会立即终止当前所在的while,do-while,for,或者switch并把控制权交回这些结构后面的语句。

当你使用带 label 的break时,它会终止指定的标记(label)了的语句。

break 语句的语法看起来像这样:

break;

breaklabel;

第一种形式的语法终止当前所在的循环或 switch; 第二种形式的语法终止指定的 label 语句。

continue 语句

这个continue语句可以用来继续执行(跳过代码块的剩余部分并进入下一循环)一个 while, do-while, for, 或者 label 语句。

当你使用不带 label 的continue时, 它终止当前 while,do-while,或者 for 语句到结尾的这次的循环并且继续执行下一次循环。

当你使用带 label 的continue时, 它会应用被 label 标识的循环语句。

continue的语法看起来像这样:

continue;

continuelabel;

下面的例子展示了带有一个当 i 等于 3的 continue 语句的循环。 于是, n 取到的值是 1, 3, 7, 12。

var i=0;var n=0;while(i<5) {i++;if(i==3){continue;}n+=i;}


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

推荐阅读更多精彩内容

  • 3.7 循环语句 必备知识:前面课程的学习 循环语句 循环语句是一系列反复执行直到符合特定条件的命令。JavaSc...
    Airing阅读 375评论 0 1
  • 表达式在 JavaScript 中是短语,那么语句就是整句命令。表达式用来计算出一个值,语句用来执行以使某件事发生...
    劼哥stone阅读 481评论 0 3
  • 前端07班 王语句JavaScript程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是...
    ea203453e188阅读 877评论 0 4
  • 兔(three):关于一个问题的三个解决方案,以下是我的实践案例。接着谈谈我的实践感受, 这种事情相信每一个人都...
    landylin阅读 526评论 0 1
  • 昨天,下午1点,与房客见面收房。那一堆的垃圾:包,书,鞋子。再加上要处理的旧空调,旧家具,旧电器。我们原来一直都这...
    津城燕窝Donna阅读 178评论 0 1