JavaScript 控制语句

一.if控制语句
1.if…else:
在这里插入图片描述

if (表达式) {
语句1;
......
}
else {
语句2;
.....
}
//功能说明:
//如果表达式的值为true则执行语句1
//否则执行语句2

2.if可以单独使用:

var x= (new Date()).getDay();//获取今天的星期值,0为星期天
var y;
if ((x==6)||(x==0)) {
y="周末";
}
else {
y="工作日";
}
alert(y);

//等价于:
y="工作日";
if ((x==6)||(x==0)) {
y="周末";
}

3.if嵌套:
在这里插入图片描述

if (表达式1) {语句1;}
else if (表达式2) {语句2;}
else if (表达式3) {语句3;}
else {语句4;}
//功能说明:
//如果表达式1的值为true则执行语句1
//如果表达式2的值为true则执行语句2...
//否则执行语句4

if (x==1){
    y="星期一";
}else if (x==2){
    y="星期二";
...
}else if (x==6){
    y="星期六";
}else if (x==0){
    y="星期日";
}else{
    y="未定义";
}

二.switch选择控制语句
1.基本格式:
在这里插入图片描述

switch (表达式) {
    case1:语句1;break;
    case2:语句2;break;
    case3:语句3;break;
    default:语句4;//其他均不成立时执行
}
//功能说明:
//如果表达式的值是值1/2...则分别执行语句1/2...然后退出
//如不为列出的任何值,执行default后的语句(语句4)
//不加break会继续执行下一个条件的语句
//default放于最后,或加break,否则执行下一条语句

var x=3
switch(x){
case 1:y="星期一";break;
case 2:y="星期二";break;
case 3:y="星期三";break;
case 4:y="星期四";break;
case 5:y="星期五";break;
case 6:y="星期六";break;
case 7:y="星期日";break;
default: y="未定义";
}
alert(y)
//case 3后不加break会继续执行y='星期四'...

2.switch比if结构更简洁清晰,使程序可读性更强,效率更高

/*if语句适用范围比较广,只要是boolean表达式都可以用if判断
而switch只能对基本类型进行数值比较
两者的可比性就仅限在两个基本类型比较的范围内

/*说到基本类型的数值比较,那当然要有两个数
然后重点来了:*/
//if语句每一句都是独立的,看下面的语句:
if (a == 1) ...
else if (a == 2) ...
/*这样a要被读入寄存器两次:1和2分别被读入寄存器一次
其实a读两次是有点多余的,在全部比较完之前只需一次读入寄存器就即可,其余都是额外开销
但是if语句必须每次都把里面的两个数从内存拿出来读到寄存器,它不知道其实比较的是同一个a*/
//于是switch case就出来了,把上面的改成switch case版本:
switch (a) {
        case 0:
                break;
        case 1:
}
                
//总结:
1.switch用来根据一个整型值进行多路分支,并且编译器可以对多路分支进行优化
2.switch-case只将表达式计算一次,然后将表达式的值与每个case的值比较,进而选择执行哪一个case的语句块
3.if的判断条件范围较广,每条语句基本上独立的,每次判断时都要条件加载一次
所以在多路分支时用switchif结构要效率高

三.for循环控制语句:与python中for循环不同!!!
1.基本格式:
在这里插入图片描述

for (初始化;条件;增量) {
    语句1;
    ...
}
//功能说明:
//先执行初始化;条件成立时执行语句1再完成增量;否则跳出循环体

for (var i=1;i<=7;i++) {
    //document.write("<H"+i+">hello</H "+i+"> ");
    //document.write("<br>");
    console.log(i);//结果:1\n2\n3\n4\n5\n6\n7\n
}

var attr=[111,222,333]
for (var i=0;i<attr.length;i++) {
    document.write(i);
    document.write("<br>");
    document.write(attr[i])
    document.write("<br>");
}

var arr=[1,"hello",true]
for (var i in arr){
    document.write(i)//i是arr中元素的位置,即1,2...
    document.write(arr[i])
}

2.for i in不推荐使用:

doms=document.getElementsByTagName("p");
//获得所有<p>标签中的内容构成的对象(见下图)

for (var i in doms){
       console.log(i);
    }
//结果:
//0 1 2 length item namedItem

//循环的是获取的一个dom元素集
//for...in用来循环对象的所有属性,dom元素集包含了上面输出的属性
//如果只要循环dom对象,可以用for循环:
for (var i=0;i<doms.length;i++){
    console.log(i) ;
    console.log(doms[i])
}
//结果:
//0 1 2

在这里插入图片描述
四.while循环控制语句
在这里插入图片描述

while (条件) {
语句1...
}
//功能说明:
//功能和for类似,当条件成立循环执行{}内语句,否则跳出循环

var i=1;
while (i<=7) {
    document.write("<H"+i+">hello</H "+i+"> ");
    document.write("<br>");
    i++;
}
//循环输出H1到H7的字体大小
<script language="JavaScript">
//sayhello是定义的函数名,前面必须加上function和空格
function sayHello(){
    var hellostr;
    var myname=prompt("请问您贵姓?","苑");
    hellostr="您好,"+myname+'先生,欢迎进入"探索之旅"!';
    alert(hellostr);
    document.write(hellostr);
}
//对前面定义的函数进行调用
sayHello();
</script>

五.异常处理
1.异常处理:

try {
    ...
    //这段代码从上往下运行,其中任何一个语句抛出异常就结束运行
}
catch (e) {
    ...
    //如果try代码块中抛出了异常,catch代码块中的代码就会被执行
    //e是一个局部变量,指向Error对象或其他被抛出的对象
}
finally {
    ...
    //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中都会被执行
}

try {
    console.log(111);
    throw Error('define error')
}
catch{
    alert(e)
}
finally {
    console.log('finally')
}
//console控制台结果:
//123
//Error:define error(...)
//finally

2.主动抛出异常:

throw Error('xxxx')
//错误名为xxxx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值