一、代码块
语句是按照自上而下的顺序执行的,在JS中可以使用 {} 来为语句进行分组,同一个 {} 中的语句称为一组语句,要么都执行,要么都不执行,一个 {} 中的语句也称为一个代码块,代码块结尾不用写 ;
*JS中的代码块只有分组的作用,没有其他用途
二、流程控制语句
JS中的程序是从上到下一行一行执行的,通过流程控制语句可以控制程序执行流程,使程序可以根据一定的条件来选择执行
语句的分类:
1. 条件判断语句
2. 条件分支语句
3. 循环语句
三、条件判断语句
使用条件判断语句可以在执行某个语句之前进行判断,如果条件成立才会执行语句,不成立则语句不执行
if 语句
语法一:
if(条件表达式){
语句;
}
if 语句在执行时,会先对条件表达式进行求值判断,如果条件表达式的值为true,则执行if后的语句,如果值为false则不会执行if后的语句
if 语句只能控制紧随其后的那个语句,如果希望if 语句可以控制多条语句,可以将这些语句统一放到代码块中
if 语句后的代码块不是必须的,但是在开发中尽量写上代码块,即使if后只有一条语句
var a = 20;
if (a > 10 && a <= 25) {
alert("a大于10并且小于等于25")
}
语法二:
if(条件表达式){
语句...;
}else{
语句...;
}
if...else...语句
当该句执行时,会先对if后的条件表达式进行求值判断,如果该值为true,则执行if后的语句,如果该值为false,则执行else后的语句
语法三:
if(条件表达式){
语句...;
}else if(条件表达式){
语句...;
}else if(条件表达式){
语句...;
}else{
语句...;
}
if...else if...else 语句
当该语句执行时,会从上到下依次对条件表达式进行求值判断,如果值为true,则执行当前语句,如果值为false,则继续向下判断,如果所有条件都不满足,则执行最后一个else后的语句。
*该语句中,只会有一个代码块被执行,一旦代码块执行,则直接结束语句
*、prompt() 函数
prompt() 可以弹出一个提示框,该提示框中会带有一个文本框,用户可以在文本框中输入一段内容,该函数需要一个字符串作为参数,该字符串会作为提示框的提示文字
用户输入的内容将会作为函数的返回值返回,可以定义一个变量来接收该内容
*prompt() 函数的返回值是String类型的
四、条件分支语句
也叫 switch 语句
语法:
switch(条件表达式){
case 表达式:
语句...;
break;
case 表达式:
语句...;
break;
default:
语句...;
break;
}
执行流程:
switch...case... 语句
在执行时会依次将case后的表达式的值和switch后的表达式的值进行全等比较,如果比较结果为true,则从当前case处开始执行代码(当前case后所有的代码都会执行,因此可以在case后面跟一个break关键字,这样可以确保只会执行当前case后的语句而不会执行其他case),如果比较结果为false,则继续向下比较,如果所有的比较结果都为false,则执行default后的语句
*使用break可以退出switch语句
var num = 3;
switch (num) {
case 1:
console.log("一");
break;
case 2:
console.log("二");
break;
case 3:
console.log("三");
break;
default:
console.log("非法数字");
break;
}
*switch语句和if语句的功能实际上是有重复的,使用switch可以实现if的功能,同样使用if也可以实现switch的功能,可根据习惯选择
五、循环语句
通过循环语句可以反复执行一段代码多次
while 循环
语法:
while(条件表达式){
语句...;
}
while语句执行时,先对条件表达式进行求值判断,如果值为true,则执行循环体,循环体执行完毕后,继续对表达式进行判断,如果为true,则继续执行循环体,依此类推,如果值为false,则终止循环
var i = 1;
while (i < 10) {
document.write(i++ + "<br/>")
}
*使用break也可以退出循环
while (true) {
alert(n++);
if (n == 10) {
break;
}
}
do...while 循环
语法:
do{
语句...;
}while(条件表达式)
执行流程:
do...while语句在执行时,会先执行循环体,循环体执行完毕以后,再对while后的条件表达式进行判断,如果结果为true,则继续执行循环体,如果结果为false,则终止循环。
*实际上这两个语句功能类似,不同的是while是先判断后执行,而do...while是先执行后判断,do...while可以保证循环体至少执行一次,而while不能
var i = 11;
do {
document.write(i++ + "<br/>")
} while (i < 10)
for 循环
在for循环中,为我们提供了专门的位置用来放三个表达式:
1.初始化表达式
2.条件表达式
3.更新表达式
语法:
for(初始化表达式; 条件表达式; 更新表达式){
语句...;
}
执行流程:
1. 执行初始化表达式,初始化变量(初始化表达式只会执行一次)
2. 执行条件表达式,判断是否执行循环,如果为true,则3. 执行循环,如果为false,则终止循环
4. 执行更新表达式,更新表达式执行完毕继续重复2.
for (var i = 0; i < 10; i++) {
alert(i);
}
*for循环中的三个部分都可以省略,也可以写在外部,如果不写任何表达式,只写两个“;”,此时循环是一个死循环,慎用
var i = 0;
for (; i < 10;) {
alert(i++);
}
嵌套的for循环
for循环内部嵌套for循环
六、break 和 continue
break
break关键字可以用来退出switch或循环语句
不能在if语句中使用break和continue
break关键字会立即终止离它最近的循环语句
*可以为循环语句创建一个label,来标识当前的循环
label名:循环语句
使用break语句时,可以在break后跟一个label,这样break将会结束指定的循环,而不是最近的
outer:
for (var i = 0; i < 5; i++) {
console.log("@外层循环" + i);
for (var j = 0; j < 5; j++) {
break outer;
console.log("内层循环" + j);
}
}
continue
continue关键字可以用来跳过当次循环
同样continue也默认只会对离他最近的循环起作用,但也可用label指定
for (var i = 0; i < 5; i++) {
if (i == 2) {
continue;
}
console.log(i);
}
*测试程序性能
在程序执行前,开启计时器
console.time("计时器的名字") ;
它需要一个字符串作为参数,这个字符串将会作为计时器的标识
终止计时器
console.timeEnd("计时器的名字");
用来停止一个计时器,需要一个计时器的名字作为参数
*开方
Math.sqrt();
可以通过Math.sqrt()对一个数进行开方