5.JavaScript学习笔记——条件语句和循环语句

条件语句和循环语句

1. 条件语句

1.1 if

if(条件表达式){
    //要执行的代码
}
if(条件表达式){
    // 当表达式成立时要执行的代码
}
else{
    // 当表达式不成立时要执行的代码
}
if (条件表达式 1) {
    // 条件表达式 1 为真时执行的代码
} else if (条件表达式 2) {
    // 条件表达式 2 为真时执行的代码
}
...
  else if (条件表达式N) {
    // 条件表达式 N 为真时执行的代码
} else {
    // 所有条件表达式都为假时要执行的代码
}

//注意各个条件之间不能有交叉

if语句和&&短路语句的转换

if(1 < 2){
    document.write("a");
}

上面的if判断语句相当于一下短路语句:

1 < 2 && document.write("a");

1.2 switch case

switch(expression){
    case value1:
        statement1;
        break;
    case value2:
        statement2;
        break;
    default:
        statement3;
}

若没有break,代码会自动匹配下一个条件,且若在某个case中表达式等于其值,则执行这个case后的语句,并不做判断的执行后面所有case/default中的语句。为了避免这种后面语句不做判断而直接执行的情况发生,需要在每一个case语句的后面加上break。

switch(n){
    case 'a':
        console.log('a');
    case 2:
        console.log('b');
    case 3: 
        console.log('c');
    default:
        console.log('d');
}

上述代码,四个输出语句都会执行。

执行结果

如果确实需要连续匹配几个条件,那么推荐写个注释表明是故意忽略了break。

例如:

var date = window.prompt('input');

switch(date){
    case "monday":
        // 跳过
    case "tuesday":
        // 跳过
    case "wednesday":
        // 跳过
    case "thursday":
        // 跳过
    case "friday":
        console.log('working');
        break;
    case "saturday":
        // 跳过
    case "sunday":
        console.log('relaxing');
        break;
}

2. 循环语句

2.1 for

for(initialization; condition; increment) {
    // 要执行的代码
}

JS for 循环中括号中的三个表达式是可以省略的,但是用于分隔三个表达式的分号不能省略

2.2 while

while (条件表达式) {
    // 要执行的代码
}

while(1){}为死循环。

3. break&continue语句

break 语句用于立即退出循环,强制执行循环后的下一条语句。

而 continue 语句也用于立即退出循环,但会再次从循环顶部开始执行。

4. 相关练习

4.1 阶乘

输入一个整数n,打印出n的阶乘

var n = parseInt(window.prompt('input'));
var result = 1;
//第1种方法
// if(n == 0){
//     result = 1;
// }else{
//     for(var i = 1; i < n + 1; i ++){
//     result *= i;
//     }
// }
//第2种方法
for(var i = 1; i < n + 1; i ++){
    result *= i;
    }

document.write('The result is ' + result);

4.2 斐波那契数列

输入一个整数n,打印斐波那契数列的第n项。

// 第1种方法
// var n = parseInt(window.prompt('input'));
// var a = 1,
//     b = 1,
//     result;

// if(n < 3){
//     result = 1;
// }else{
//     for(var i = 0; i < n - 2; i ++){
//         a = a + b;  //令a=b,b=a+b
//         b = a - b;
//         a = a - b;
//         b = a + b;
//     }
//     result = b;
// }
// document.write('the result is ' + result);
//第2种方法
// var n = parseInt(window.prompt("input"));
// var a = 1,
//     b = 1,
//     result;
// if(n == 1 || n == 2){
//     result = 1;
// }
// for(var i = 2; i < n; i ++){
//     result = a + b;
//     a = b;
//     b = result;
// }
// document.write(result);
//第3种方法
var n = parseInt(window.prompt("input"));
var a = 1,
    b = 1,
    foo;

function Fibonacci(n) {
    if(n == 1 || n == 2){
        return 1;
    }
    return Fibonacci(n - 1) + Fibonacci(n - 2);
}

document.write(Fibonacci(n));

4.3 输出最大值

输入三个数,输出其中最大的哪个数。

var a = parseInt(window.prompt('input a: '));
var b = parseInt(window.prompt('input b: '));
var c = parseInt(window.prompt('input c: '));
if(a < b){
    a = b;
}
if(a < c){
    a = c;
}
document.write(a);

4.4 2的n次方

var n = parseInt(window.prompt('input'));
var result = 1;
for(var i = 0; i < n; i ++){
    result *= 2;
}
document.write("The result is " + result);

4.5 输出100以内的质数

// var flag = 1;
// for(var n = 2; n < 101; n ++){
//     for(var i = 2; i <= Math.sqrt(n); i ++){
//         if(n % i == 0){
//             flag = 0;
//             break;
//         }else{
//             flag = 1;
//         }
//     }
//     if(flag == 1){
//         document.write(n + ' ');
//     }
// }

var flag = 1;
for(var n = 2; n < 101; n ++){
    for(var i = 2; i < n; i ++){
        if(n % i){
            flag = 1;
        }else{
            flag = 0;
            break;
        }
    }
    if(flag){
        document.write(n + " ");
    }
}

4.6 倒转3位数

var n = parseInt(window.prompt('Please enter a three-digit integer: '));
var result;
if(n >= 0 && n < 1000){
    var a = n % 10;
    var b = (n - a) / 10 % 10;
    var c = (n - a - b * 10) / 100 % 10;
    result = a * 100 + b * 10 + c;
    document.write('the result is: ' + result);
}else{
    document.write('error');
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值