JavaScript Part 2(条件语句和循环)

一、JS条件语句

条件语句用于基于不同的条件来执行不同的动作。

通常在写代码时,您总是需要为不同的决定来执行不同的动作。您可以在代码中使用条件语句来完成该任务。

在 JavaScript 中,我们可使用以下条件语句:

(1)if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
(2)if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
(3)if...else if....else 语句- 使用该语句来选择多个代码块之一来执行
(4)switch 语句 - 使用该语句来选择多个代码块之一来执行

1.if语句

if语句的语法:

if (condition)
{
//当condition(条件)为 true 时执行的代码
}

例如:

<script>
var age = prompt('输入年龄');

        if (age >= 18) {
            alert('可以进入网吧');
        }
</script>

这个案例实现的功能:
从键盘输入一个年龄,把年龄存储在age变量里(此时的age是一个字符串),if语句执行的条件是age>=18(此处通过运算符对age进行了隐式转换--------数值型),当不满足条件时不执行任何语句。

2.if…else 语句

if…else 语句的语法:

if (condition) {
//当条件为 true 时执行的代码
} else {
//当条件为 false 时执行的代码
}

例如:

<script>
        var age = prompt('输入年龄');

        if (age >= 18) {
            alert('可以进入网吧');
        } else {
            alert('未满18');
        }
</script>

这是对上一个案例的补充----------补充了不满足条件时执行的语句。

3.if…else if…else 语句

if…else if…else 语句语法:

if (condition1) {
//当条件 1 为 true 时执行的代码
} else if (condition2) {
//当条件 2 为 true 时执行的代码
} else {
//当条件 1 和 条件 2 都不为 true 时执行的代码
}

例如:

<script>
        var score = prompt('请输入成绩:');
        if (score >= 90) {
            alert('A');
        } else if (80 <= score) {
            alert('B');
        } else if (70 <= score) {
            alert('C');
        } else if (60 <= score) {
            alert('D');
        } else {
            alert('E');
        }
</script>

此案例实现的功能:
(1)从键盘输入一个成绩判断等级,90分以上为’'A",80-90分为"B",70-80分为"C",60-70分为"D",60分以下为"E",;
(2)把成绩赋给score这个变量;
(3)第一步判断成绩是否大于等于90,如果满足条件,弹出内容为"A"的警告框;
(4)如果不满足第一个条件(即成绩小于90),再判断是否满足成绩大于等于80这个条件,以此类推;
(5)if…else if…else 语句的一个好处就是它如果不满足上一个条件,则会在上一个条件的补集中判断下一个条件是否满足。这就是else if 后面的条件只写一个的原因。

4.switch 语句

switch 语句的语法:

<script>
switch(表达式)
{
    case 常量1:
        //执行代码块 1
        break;
    case 常量2:
        //执行代码块 2
        break;
    default:
        //与 case 常量1 和 case 常量2 不同时执行的代码
}
</script>

在这里插入图片描述
例如:

<script>
        var num = prompt('请输入一个数字:');
        switch (num * 1) {
            case 1:
                alert('星期一');
                break;
            case 2:
                alert('星期二');
                break;
            case 3:
                alert('星期三');
                break;
            case 4:
                alert('星期四');
                break;
            case 5:
                alert('星期五');
                break;
            default:
                alert('周末');
                break;
        }
</script>

此案例实现的功能:
从键盘输入1-7的数字,弹出对应的星期。

二、JS循环语句

(1)for - 循环代码块一定的次数
(2)while - 当指定的条件为 true 时循环指定的代码块;
(3)do/while - 同样当指定的条件为 true 时循环指定的代码块。

1.for循环

for循环的语法:

for (初始变化量; 条件表达式; 操作表达式) {
//被执行的代码块
}

在这里插入图片描述
例如-------求1-100的整数和

    <script>
        var sum = 0;
        for (var i = 1; i <= 100; i++) {
            sum = sum + i;
            // sum += i;
        }
    </script>

(1)声明一个变量存储计算的和sum;
(2)第一步计算0+1,第二步计算0+1+2,第三步计算0+1+2+3,依此类推,共需计算100次
(3)每次的操作表达式都是i++,所以i从1加到100就是执行100次循环体

2.while 循环

while循环的语法:

while (条件)
{
需要执行的代码
}

只要指定条件为 true,循环就可以一直执行代码块,所以一般要将控制循环的变量写在循环体里。

如果忘记增加条件中所用变量的值,该循环永远不会结束。这可能导致浏览器崩溃。

下面是用while循环实现的1-100求和:

<script>
		var j = 1;
        var sum = 0;
        while (j <= 100) {
            sum += j;
            j++;
        }
        console.log('和为:' + sum);
 </script>

while循环其实就是相当于for循环把初始变量写在循环上面,把操作表达式写在循环体里,把条件表达式写在while的括号里。

3.do/while 循环

do/while 循环是while循环的变体,他俩的区别在于,do/while 循环不管条件是否满足,它都会执行一次循环体,从它的语法中可以很容易看到:

do
{
需要执行的代码
}
while (条件);

顺序结构从上往下执行do语句,执行完后判断条件是否满足,若满足,则返回重复执行大括号了的循环语句。

例如:

<script>
    var x = "",
        i = 0;
    do {
        x = x + "该数字为 " + i + "\n";
        i++;
    }
    while (i < 0)
    console.log(x);
</script>

上述条件是i<0,变量初始值是0,不满足条件,但是最后循环体还是会执行一遍,结果是:
在这里插入图片描述

三、break和continue语句

break 语句用于跳出整个循环。

continue 用于跳过当前这次循环。

1.break语句

上面讲的switch语句,每条case语句里都有break语句,这时的break就用于跳出整个switch语句----------如果没有break语句将会执行匹配case后面的所有语句,使得switch语句没有意义。

例如:

<script>
        var num = prompt('请输入一个数字:');
        switch (num * 1) {
            case 1:
                console.log('星期一');
            case 2:
                console.log('星期二');
            case 3:
                console.log('星期三');
            case 4:
                console.log('星期四');
            case 5:
                console.log('星期五');
            default:
                console.log('周末');
                break;
        }
    </script>

当我输入3时,出现的结果:
在这里插入图片描述
所以这就证明了break语句的重要性。

2.continue语句

它用于跳出当前这次循环

<script>
        var x = '';
        for (i = 0; i <= 5; i++) {
            if (i == 3) continue;
            x = i + "\n";
            console.log(x);
        }
</script>

(1)这个循环的循环次数是6次
(2)每次都把i的值赋给x,i每次自加一;
(3)当i=3时,会跳出这次循环,不执行循环体的内容,继续下一次循环;

所以最后的结果:
在这里插入图片描述
该案例循环还是执行了6次,只是当i=3时,没有执行下面的输出语句。

四、作业

下面是三个通过以上知识可以完成的作业:

1.输出1000以内的水仙花数

水仙花数:是一个三位数,它等于个位数的三次方、十位数的三次方、百位数的三次方之和。例如:1^3 + 5^3+ 3^3 = 153。

解题如下:

<script>
        for (i = 100; i < 1000; i++) {
            var ge = i % 10;
            var shi = (i % 100 - ge) / 10;
            var bai = parseInt(i / 100);
            var sum = ge * ge * ge + shi * shi * shi + bai * bai * bai;
            if (i == sum) console.log(i + '\n');
        }
</script>

(1)水仙花是三位数,所以判断100-999的数即可;
(2)个位就是原数除以10的余数;
(3)十位就是除以100的余数减去个位再除以10;
(4)百位就是对原数除以100的取整;
(5)最后判断个十百的三次方之和是否等于原数,若是,则输出。

最后的输出结果:
在这里插入图片描述

2.输出100以内的所有完数

完数:一个数恰好等于它的真因子之和,这个数就是完数。
例如:6的因子有:1,2,3,6;除过它本身,1+2+3=6,说明6就是完数。

<script>
        var n = 1;
        for (i = 1; i <= 100; i++) {
            var sum = 0;
            for (j = 1; j < i; j++) {
                if (i % j == 0) sum += j;
            }
            if (sum == i) {
                console.log('第' + n + '个完数是:' + i);
                n++;
            }
        }
</script>

(1)外循环,依次判断1-100所有数;
(2)内循环,取出除过它本身的所有因子并相加;
(3)判断因子和是否与本身相等,若相等则输出;
(4)n是用来记录完数数量的变量,每找到一个完数,给它加一。
最后的结果是:
在这里插入图片描述
所以100以内只有两个完数。

3.计算a+aa+aaa+…+aa…aa

其中a的值和最后一位a的位数由键盘输入。

<script>
        var a = parseInt(prompt('输入a的值:'));
        var n = parseInt(prompt('输入a的位数:'));
        var sum = a,
            temp = a;
        for (var i = 1; i < n; i++) {
            if (n > 1) {
                a = a * 10 + temp;
                sum = sum + a;
            }
        }
        console.log(sum);
</script>

在这里插入图片描述
首先做分析可得-------后一项是前一项乘10加a的值得来,所以只需要计算下一位的值再把这个值赋给sum这个容器即可。

(1)n是位数,第一项不需要计算,直接赋给sum,所以需要计算才能得到的数有n-1位,从而确定循环次数。
(2)程序中a充当的角色是被加数,所以要把a的值存在temp里参加运算。

五、总结

这部分内容是学习任意一门语言的必经之路,通过实现各种功能可以加强对这部分内容的巩固和应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值