JavaScript流程控制语句

学习要点:

1.语句的定义

2.if 语句

3.switch语句

4.do...while语句

5.while语句

6.for语句

7.for...in语句

8.break和continue语句

9.with语句

ECMA-262规定了一组流程控制语句。语句定义了ECMAScript中的主要语法,语句通常由一个或者多个关键字来完成给定的任务。诸如:判断、循环、退出等

一.语句的定义 

在ECMAScript中,所有的代码都是由语句来构成的。语句表明执行过程中的流程、限定与约定,形式上可以是单行语句,或者由一对大括号“{}”括起来的复合语句,在语法描述中,复合语句整体可以作为一个单行语句处理。如下:

var box = 100; //单行语句
var age = 20; //另一条单行语句 {
//用花括号包含的语句集合,叫做复合语句,单位一个
//一对花括号,表示一个复合语句,处理时候,可以当做一条单行语句来对待
//复合语句我们一般叫做代码块
var height = 200;
var width = 300;
}

语句的种类

类型

子类型

语法

声明语句

变量声明语句

var box = 100;

标签声明语句

label : box;

表达式语句

变量赋值语句

box = 100;

函数调用语句

box();

属性赋值语句

box.property = 100;

方法调用语句

box.method();

分支语句

条件分支语句

if () {} else {}

多重分支语句

switch () { case n : ...};

语句的种类(续)

类型

子类型

语法

循环语句

for

for (;;;) {}

for ... in

for ( x in x) {}

while

while () {};

do ... while

do {} while ();

控制结构

继续执行子句

continue ;

终端执行子句

break ;

函数返回子句

return ;

异常触发子句

throw ;

异常捕获与处理

try {} catch () {} finally {}

其他

空语句

;

with语句

with () {}

二.if语句

if 语句即条件判断语句,一共有三种格式:

1. if (条件表达式) 语句;

判断条件返回布尔值,返回true(真)就执行里面的语句,反之返回假,则不执行里面的语句

var box = 100;
if (box > 50) alert('box大于50'); //if里面的括号(box > 50)返回的结果转换成布尔值是
//true(真)的时候,则执行后面的一条语句,否则不执行 var box = 100;
if (box > 50)
alert('box大于50'); //两行的if语句,判断后也执行一条语句 alert('不管怎样,我都能被执行到!'); //这条会被执行,可以看出这个打印已经给if语句没关系了 var box = 100;
if (box < 50) {
alert('box大于50'); //用复合语句包含,判断后执行一条复合语句
alert('我被执行到!'); //复合语句就是一个代码块,判断后执行的代码块
}

对于if语句括号里的表达式,ECMAScript会自动调用Boolean()转型函数将这个表达式的结果转换成一个布尔值。如果值为true,执行后面的一条语句,否则不执行。

PS:if语句括号里的表达式如果为true,只会执行后面一条语句,如果有多条语句,那么就必须使用复合语句把多条语句包含在内。

PS2:推荐使用第一种或者第三种格式,一行的if语句,或者多行的if复合语句。这样就不会因为多条语句而造成混乱。

PS3:复合语句我们一般喜欢称作为:代码块。

2. if (条件表达式) {语句;} else {语句;}

判断条件返回布尔值,返回true(真)就执行里面的语句,反之返回假,则执行else里面的语句

var box = 100;
if (box > 50) {
alert('box大于50'); //条件为true,执行这个代码块
} else {
alert('box小于50'); //条件为false,执行这个代码块
}

3.if (条件表达式) {语句;} else if (条件表达式) {语句;} ... else {语句;} 

多个条件判断,那个条件返回true(真)就执行那个里面的语句、下面的就不执行了,所有的条件都返回假,就执行else里面的语句

var box = 100;
if (box >= 100) { //如果满足条件,不会执行下面任何分支
alert('甲');
} else if (box >= 90) {
alert('乙');
} else if (box >= 80) {
alert('丙');
} else if (box >= 70) {
alert('丁');
} else if (box >= 60) {
alert('及格');
} else { //如果以上都不满足,则输出不及格
alert('不及格');
}

三.switch语句

switch语句是多重条件判断,用于多个值相等的比较。被判断变量与那条判断相等就执行那条里面的语句

break关键字,中途退出当

var box = 1;
switch (box) { //用于判断box相等的多个值
case 1 : //case 1 相当于如果box==1,会执行alert('one');
alert('one');
break; //break;遇到break会退出判断语句,用于防止语句的穿透
case 2 :
alert('two');
break;
case 3 :
alert('three');
break; default : //相当于if语句里的else,否则的意思
alert('error');
}

四.do...while循环语句

do...while语句是一种先运行,后判断的循环语句。也就是说,不管条件是否满足,至少先运行一次循环体。

var box = 1;
do { //先运行一次,再判断
alert(box); //第一步打印box
box++; //第二步累加,box等于2
} while (box <= 5); //第三步判断box是否小于或者等于5,此时box等于2,条件成立开始循环

五.while循环语句

while语句是一种先判断,后运行的循环语句。也就是说,必须满足条件了之后,方可运行循环体。

var box = 1;                            //如果是1,执行五次,如果是10,不执行
while (box <= 5) { //先判断,再执行
alert(box);
box++;
}

六.for循环语句

for语句也是一种先判断,后运行的循环语句。但它具有在执行循环之前初始变量和定义循环后要执行代码的能力。

for (var box = 1; box <= 5 ; box++) {        //第一步,声明变量var box = 1;
alert(box); //第二步,判断box <=5
} //第三步,alert(box)
//第四步,box++
//第五步,从第二步再来,直到判断为false

七.for...in循环语句,迭代循环语句,可以循环出对象里的数据

var duix = {             //创建对象,对象有点像python里的字典,由键值对组成
'xm':'林贵秀',
'nl':'32',
'xb':'男'
};
for(var i in duix){ //循环出对象里面的元素名称,定义变量i,将每次循环到的数据赋值给i
alert(i); //循环打印出i
};

 

八.break和continue语句

break和continue语句用于在循环中精确地控制代码的执行。其中,break语句会立即退出循环,强制继续执行循环体后面的语句。而continue语句退出当前循环,继续后面的循环

break关键字,立即退出循环

document.write()打印数据显示到网页上

for (var box = 1; box <= 10; box++) {
if (box == 5) break; //如果box是5,就退出循环
document.write(box);
document.write('<br />');
}

continue关键字,退出当前循环继续后面的循环

for (var box = 1; box <= 10; box++) {
if (box == 5) continue; //如果box是5,就退出当前循环
document.write(box);
document.write('<br />');
}

九.with()语句,对象作用域设置

with语句的作用是将代码的作用域设置到一个特定的对象中。

var box = {                                //创建一个对象
'name' : '李炎恢', //键值对
'age' : 28,
'height' : 178
}; var n = box.name; //从对象里取值赋给变量
var a = box.age;
var h = box.height; //可以将上面的三段赋值操作改写成:
with (box) { //省略了box对象名
var n = name;
var a = age;
var h = height;
}

第一百零一节,JavaScript流程控制语句的更多相关文章

  1. 第一百零九节,JavaScript面向对象与原型

    JavaScript面向对象与原型 学习要点: 1.学习条件 2.创建对象 3.原型 4.继承 ECMAScript有两种开发模式:1.函数式(过程化),2.面向对象(OOP).面向对象的语言有一个标 ...

  2. 第一百零七节,JavaScript基本包装类型,数据类型的方法

    JavaScript基本包装类型,数据类型的方法 学习要点: 1.基本包装类型概述 2.Boolean类型 3.Number类型 4.String类型 为了便于操作基本类型值,ECMAScript提供 ...

  3. 第一百零五节,JavaScript正则表达式

    JavaScript正则表达式 学习要点: 1.什么是正则表达式 2.创建正则表达式 3.获取控制 4.常用的正则 假设用户需要在HTML表单中填写姓名.地址.出生日期等.那么在将表单提交到服务器进一 ...

  4. 第一百零二节,JavaScript函数

    JavaScript函数 学习要点: 1.函数声明 2.return返回值 3.arguments对象 函数是定义一次但却可以调用或执行任意多次的一段JS代码.函数有时会有参数,即函数被调用时指定了值 ...

  5. 第一百零六节,JavaScript变量作用域及内存

    JavaScript变量作用域及内存 学习要点: 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只 ...

  6. 第一百零四节,JavaScript时间与日期

    JavaScript时间与日期 学习要点: 1.Date类型 2.通用的方法 3.格式化方法 4.组件方法 ECMAScript提供了Date类型来处理时间和日期.Date类型内置一系列获取和设置日期 ...

  7. 第一百零三节,JavaScript对象和数组

    JavaScript对象和数组 学习要点: 1.Object类型 2.Array类型 3.对象中的方法 什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAScript中 ...

  8. 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据

    第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...

  9. 第四百零六节,自定义用户表类来继承Django的用户表类,

    第四百零六节,自定义用户表类来继承Django的用户表类, models.py from django.db import models # Create your models here. from ...

随机推荐

  1. smoke.js是一款基于HTML5 Canvas的逼真烟雾特效js插件。通过该js插件,可以非常轻松的在页面中制作出各种烟雾效果。

    Smoke.js 是一个浏览器默认警告系统的JavaScript替代品,如果你想要跨浏览器与平台的标准化JavaScript警告窗口,Smoke.js就是你想要的. Smoke.js是一个轻量级且灵活 ...

  2. Virtualbox中的Linux:未能加载虚拟光驱 VBoxsGuestAdditions.iso到虚拟电脑

    安装增强功能 出现了 这个问题,需要弹出光盘,再次安装.

  3. UVa 1395 Slim Span

    问题:给出一个n结点的图,求最大边与最小边差值最小的生成树 my code: #include <iostream> #include <cstdio> #include &l ...

  4. vim实用技巧总结

    1. 单个文件内实用mark来帮助跳转以及一些宏操作.(注意:mark不能用于多文件之间的跳转)mch 设置宏,保存到ch标记(不是ch寄存器)'ch 跳转到标记的行首`ch 跳转到标记的字符处另:为 ...

  5. IMAX公司CEO:进军VR产业,打造VR体验中心

    591ARVR资讯网www.591arvr.com报道近日,<财富>杂志采访了IMAX首席执行官理查德·葛尔方(Richar Gelfond),后者谈了谈虚拟现实和IMAX正在打造的VR影 ...

  6. vue 2.0 无法编译ES6语法

    # vue2.0 webpack 无法编译 ES6 语法 之前在使用 vue 1.x 时用 vue-loader@8.0.0 版本可以正常打包vue的代码,包括ES6语法也能正常转为ES5语法,但是当 ...

  7. Spark编程模型及RDD操作

    转载自:http://blog.csdn.net/liuwenbo0920/article/details/45243775 1. Spark中的基本概念 在Spark中,有下面的基本概念.Appli ...

  8. angular-file-upload+springMVC的使用

    最近项目中需要用到文件上传,使用了angular-file-upload插件完成 首先来介绍下这个插件的一些属性(参考官方文档) FileUploader 属性 url {String}: 上传文件的 ...

  9. jmeter之jtl文件解析

    我们知道命令行的方式执行完成jmeter后,会生成jtl文件,里面打开后就是一行行的测试结果, <httpSample t="1" lt="1" ts=& ...

  10. Redis 的几种数据结构&五种数据类型对象

    先看几种数据结构 通过分析底层的数据结构,学习如何根据场景选型和设计 1,简单动态字符串 redis使用的字符串SDS有别于C语言中的字符串 a, 结构 free字段为已分配但未使用的空间 len为已 ...