1 代码块
简介:
程序是由一条一条语句构成的,语句是按照自上向下的顺序一条一条执行的,在JS中可以使用{}来为语句进行分组
同一个{}中的语句我们称为是一组语句,他们要么都执行,要么都不执行
使用:
JS中的代码块,只具有分组的作用,没有其他的用途
代码块里面的内容,在外部是完全可见的
2 流程控制语句
基本概念:
默认情况下,程序的运行流程是这样的:运行程序后,系统会按书写从上至下顺序执行程序中的每一行代码,但是这样并不能满足我们所有的开发需求
实际开发中,我们需要根据不同的条件执行不同的代码或者重复执行某一段代码
为了方便我们控制程序的运行流程,JavaScript提供3种流程结构,不同的流程结构可以实现不同的运行流程。分别是顺序、选择、循环三种基本控制结构构造
1)顺序结构:默认的流程结构。按照书写顺序从上至下执行每一条语句
2)选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码
3)循环结构:在给定条件成立的情况下,反复执行某一段代码
2.1 if
定义:
如果表达式为真,执行语句块1,否则执行语句块2
格式:
if(条件表达式) {
语句块1
}
else {
语句块2
}
如果条件表达式1为真,则执行语句块1,否则判断条件表达式2,如果为真执行语句块2,否则再判断条件表达式3,如果真执行语句块3,当表达式123都不满足,会执行最后一个else语句
var age=35;
if(age>40) {
console.log('老年人');
}else if(age>20){
console.log('中年人')
}else if(age>12){
console.log('成年人');
}else {
console.log('未成年人');
}
注意点:
1)如果只有一条语句时,if后面的大括号可以省略(不建议省略)
2)分号“;”也是一条语句,空语句
if(1>0); //if已经结束,后面的不再属于if
{
语句块1
}
3)if else是一个整体,else匹配if的时候匹配离他最近的一个if
4)对于非Boolean类型的值,会先转换为Boolean类型后再判断
5)判断变量与字面量的问题
但凡遇到比较一个变量等于或者不等于某一个字面量的时候,把字面量写在前面
本来是先判断变量a储存的值是否等于0,
但是如果不小心写成了a=0
,代表把0储存到a中(赋值)
为了避免这种问题,判断是否相等时把字面量写在前面
因为等号左边只能是变量,所以如果少些一个等号会报错
6)if语句可以嵌套使用
var num=20;
if(num>=10 {
if(num<=30) {
console.log('满足条件!');
}
}
2.2 Switch
Switch和if一样都属于选择结构,都会对给定的条件进行判断,再根据判断结果来决定执行哪一段代码
基本格式:
switch(条件表达式) {
case 表达式:
语句1;
break;
case 表达式:
语句2;
break;
case 表达式n:
语句n;
break;
default:
语句n+1;
break;
}
含义:
1)计算条件表达式的值。并逐个与case后面表达式的结果值比较
2)当条件表达式的值与某个表达式的值全等时,执行其后的语句,并且不会再与其他 case进行比较
3)如果条件表达式的值与所有的case后的表达式均不相同时,则执行default后的语句
示例:
var num=3;
switch(num) {
case 1 :
console.log('壹');
break;
case 2 :
console.log('贰');
break;
case 3 :
console.log('叁'); //输出“叁”
break;
default:
console.log('其他');
break;
}
注意事项:
1)case全等与问题:
JavaScript中case
判断是否相等时是全等于(===),而不是等于(==),也就是说即会判断类型是否相等又会判断值是否相等
case
后可以是字面量也可以是变量
2)表达式判断问题:判断时会先计算表达式的值,再判断
3)case的穿透问题:switch
里面的case
只要匹配一次其他的都会失效,包括default
在case
语句最后增加的break
语句,使每一次执行之后均可跳出switch
语句,从而避免输出不应有的结果
4)default
的位置问题:
default
可以省略
default
语句可以写在switch
语句中的任意位置
案例:
//根据输入成绩判断等级
var num=window.prompt('请输入您的分数:');
switch(num= parseInt(num/10)) {
case 10 :
case 9 :
console.log('A');
break;
case 8 :
console.log('B');
break;
case 7 :
console.log('C');
break;
case 6 :
console.log('D');
break;
default :
console.log('E');
break;
}
if
语句和switch
语句的选择:
1)分支比较多且无穷尽时最好用if
,其他情况可以视情况而定
2)如果数据量不是很大,并且数据是固定的可以用switch
3)理论上switch
的效率比if高
4)switch
的弊端
判断用户输入的数是否大于100
if
很容易,switch
很麻烦