JS-流程控制
-
语句和代码块
—语句statement:程序是由一条条语句构成的;语句是按照自上往下的顺序一条一条执行的;
—代码块:一个{}中的语句,我们也称为代码块;
—同一个{}中的语句,我们称为一组语句,它们共同执行或者共同不执行;
—在代码块的后边就不用编写分号了;
—JS中的代码块,只具有分组功能,不具备其他功能;
—代码块内部的内容,在外部是完全可见的,代码块只是分组,不能将代码块内的内容进行隔离;
-
流程控制语句
—通过流程控制语句可以控制程序执行流程,使程序可以根据一定条件来选择执行;
—流程控制语句的分类:
-
条件判断语句
-
条件分支语句
-
循环语句
-
-
条件判断语句
—使用条件判断语句可以在执行某个语句之前进行判断,如果条件成立才会执行语句,条件不成立则语句不执行;
—语法一:
if
语句if(条件表达式){ 语句 }
—
if
语句在执行时,会先对条件表达式进行求值判断,如果条件表达式的值为true
,则执行if
后的语句;如果条件表达式的值为false
,则不会执行if
后的语句;—
if
语句只能控制紧随其后的语句,如果希望if
语句控制多条语句,可以将if
后面的语句放入代码块中;—
if
语句后的代码块不是必须的,但是在开发中尽量写上代码块,结构更清楚,即使if后面只有一条语句—
if
语句中条件表达式可以通过与运算符&&
同时满足多个条件;语法二:
if..else
语句if(条件表达式){ 语句... }else{ 语句... }
—当该语句执行时,会先对
if
后的条件表达式进行求值判断,如果该值为true
,则执行if
后的语句;如果该值为false
,则执行else
后面的语句;语法三:
if..else if..else
语句if(条件表达式){ 语句... }else if(条件表达式){ 语句... }else{ 语句... }
—当该语句执行时,会从上向下依次对条件表达式进行求值判断,如果条件表达式为
true
,则执行当前语句;如果值为false
,则继续向下判断;如果所有条件都不满足,则执行最后else
后面代码块的语句;—在执行该语句中,只会有一个代码块被执行,一旦代码被执行了,则直接结束语句;
—在编写条件表达式时,一定要注意条件表达式的顺序,避免出现死代码;
注意条件表达式中,=赋值运算符和==相等运算符的区别:
如果条件表达式中为 = 赋值运算符,则条件表达式的判断值永远为
true
;在进行相等比较时,一定使用==相等运算符!!! -
条件分支语句
—条件分支语句也叫
switch
语句;—语法:
switch(条件表达式){ case 表达式: 语句... break; case 表达式: 语句... break; . . . default: 语句... break; }
—
switch case
语句的执行流程:在执行时依次将case
后面的表达式的值和switch
后面表达式的值进行全等比较;—如果比较结果为
true
,则从当前case
处开始执行代码;(当前case
后面的代码都会被执行)—如果比较结果为
false
,则继续向下比较执行;—
break
:使用break
可以退出switch
语句;可以在case
语句中加上break
,确保只会执行当前的case
语句,而不会执行其他case
语句;—
default
:如果所有的比较结果都为false
,则只执行default
中的语句;—
switch
和if
语句的功能实际上有重复,使用switch
语句可以实现if
语句的功能,同样,使用if
语句也可以实现switch
语句的功能;所以在使用时,根据自己的习惯选择;if
语句在开发过程中使用较多; -
循环语句
—循环语句:通过循环语句可以反复执行一段代码多次;
—创建一个循环需要三部分:
-
创建一个初始化变量;
-
在循环中设置条件表达式;
-
定义一个更新表达式,每次更新初始化变量的值;
while
循环语句—语法:
while(条件表达式){ 语句... }
—
while
循环执行过程:首先对条件表达式进行求值判断,如果值为true
,则执行循环体,循环体执行完毕后,继续对条件表达式进行判断,如果为true
,继续对循环体执行,依次类推;如果条件表达式值为false
,则终止循环;—将条件表达式写死为
true
的循环为死循环,该循环不会停止,除非浏览器关闭;开发过程中慎用;可以使用break
来终止死循环;do while
循环语句—语法:
do { 语句... }while(条件表达式)
—执行流程:在执行过程中先执行循环体,循环体执行完毕后,在对
while
后的条件表达式进行判断,如果结果为true
,否则继续执行循环体,执行完毕继续判断,以此类推;如果结果为false
,则终止循环;—实际上
while
和do while
功能类似,但不同的是,while
是先判断在执行;而do while
是先执行在判断;因此do while
可以保证循环体至少执行一次;相比来说while
所用较多;for
循环语句—在
for
循环中,提供专门的位置用来放置三个表达式:初始化表达式,条件表达式,更新表达式;并且用分号进行隔开;—语法:
for(初始化表达式;条件表达式;更新表达式){ 语句... }
—执行流程:
for
循环语句首先执行初始化表达式,即初始化变量(初始化表达式只会执行一次);其次执行条件表达式,判断是否执行循环,如果判断结果为true
,则执行循环体;如果为false
,终止循环体;最后执行更新表达式,更新表达式执行完毕后,继续执行条件表达式进行判断;—
for
循环中三个部分都可以省略,可以写入外部;例如:var i=0; for(;i<10;){ alert(i++); }
—如果
for
循环中不写任何表达式,只写两个分号,此时循环为一个死循环,慎用;—
for
循环的嵌套:如果打印一个图形,外部循环控图像的高度,内部循环控制图形的宽度,经典的三角形图形打印; -
-
break
关键字和continue
关键字break
关键字—可以用来退出
switch
或者循环语句;但是不可用于if
语句;—使用
break
关键字,循环或者switch
语句立即结束;—
break
可以应用于循环中的if
语句中,此时关键字是对整个for
循环起作用;—多个循环嵌套情况下,
break
关键字会立即终止离他最近的那个循环语句;—可以为循环语句创建一个
label
标签,来标识当前的循环;语法:label名称: for(){ 循环体 }
—使用
break
时,可以在break
后面跟着一个label
,这样break
结束的就是指定循环而不是最近的;(开发中不经常使用);continue
关键字—可以用来跳过当次循环,但是不可以用于
if
语句和switch
语句,可以用于循环语句中的if
语句,对当前循环起作用;—
continue
关键词默认对离他最近的循环起作用;同时可以设定label
,终止特定循环; -
prompt()
函数—
prompt()
函数可以弹出一个提示框,该提示框中会带有一个输入文本框,用户可以在文本框中输入一段内容;—该函数需要一个字符串作为参数,字符串的内容将会作为提示框的提示文字;
—用户输入的内容将会作为函数的返回值返回,可以定义一个变量进行内容的接收;
—
prompt()
函数的返回值是String
类型的,在prompt()
前面加入+,其返回值的类型就变成了Number
型; -
JS计时器
可以通过计时器进行程序性能的测试:
—在程序执行前开启计时器,
console.time("计时器名称")
需要一个字符串作为计时器的标识;—
console.timeEnd("计时器名称")
需要一个计时器名字作为标识,可以终止计时;