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. C语言:json库使用学习

    Json基础 一.Json的概念 Json(Javascript Object Notation)全称为JavaScript对象表示法,是一种轻量级的数据交换格式,采用完全独立于语言的文本格式.JSO ...

  2. Aspose系列实现docx转PDF,PPT转PDF,EXCEL转PDF

    没有什么营养,就是调用一下这个组件.其实一开始用的是Microsoft.Office.Interop.Excel;Microsoft.Office.Interop.Word 但是在服务器要注意,服务器 ...

  3. mysql循环插入数据库中数据。

    DELIMITER ;; CREATE PROCEDURE test_insert () BEGIN DECLARE i INT DEFAULT 1; WHILE i<100 DO insert ...

  4. intellij 出现“Usage of API documented as @since 1.6+”的解决办法

    Usage of API documented as @since 1.6+ This inspection finds all usages of methods that have @since ...

  5. strut2配置文件属性介绍

    mystruts.xml配置文件属性介绍 1.package标签的中的namespace属性 <package name="default" extends="st ...

  6. 用python做中文自然语言预处理

    这篇博客根据中文自然语言预处理的步骤分成几个板块.以做LDA实验为例,在处理数据之前,会写一个类似于实验报告的东西,用来指导做实验,OK,举例: 一,实验数据预处理(python,结巴分词)1.对于爬 ...

  7. Spring Security(19)——对Acl的支持

    目录 1.1           准备工作 1.2           表功能介绍 1.2.1     表acl_sid 1.2.2     表acl_class 1.2.3     表acl_obj ...

  8. es5 中类的2种基本实现方法

    function test(){ this.a = 1; this.func = function(){ // var a = 3;下面的this 取的是上面的1,这个不影响 return this. ...

  9. android 给layout布局添加点击事件

    <方法一> 1,在代码中加入如下红色代码,不然会被包含在其中的控件把焦点抢占,此时子控件无需设置clickable和focuseable <RelativeLayout        ...

  10. 李明杰的视频和李明杰的博客是学习OC的基础

    http://www.cocoachina.com/bbs/read.php?tid=196664