《JavaScript高级程序设计 (第3版)》学习笔记5:chapter_3 - 3 statements(语句)

让学习“上瘾”,成为更好的自己!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>statements</title>
</head>
    <script>
        /*
        if 语句
        do-while 语句
        while语句
        for语句
        for-in语句

        label语句

        with语句

        switch语句
        
     【因为语句跟其他编程语言没有太多区别,所以这里省略了!!】
        
        
        */
    
    // 由于ECMAScript不存在块级作用域,因此在循坏内部定义的变量在外部也可以访问到
    // for语句中的“初始化表达式”、“控制表达式”和“循环后表达式”是可选的
    // for (var i = 0;i<10;i++){
    //     console.log(i);

    // }
    // alert(i);

    // for-in语句:一种精准的迭代语句,可以用来枚举对象的属性
    // // for (property in expression) statement;
    // for (var propName in window){
    //     document.write(propName+' \n');
    // }
    // 1, ECMAScript对象的属性是没有顺序的
    // 2, 为了保证最大限度的兼容性,使用for-in循环前,先检测确定该对象的值是不是null or undefined

    // -------------------------------------------------
    // label语句:可以在代码中添加标签,以便将来使用
    // label:statement
    // 加标签的语句一般都要与for 语句等循环语句配合使用
    // 使用label语句,一定要使用描述性的标签,同时不要嵌套过多的循环
    // start: for(var i=0;i<5;i++){  // start标签将来可以由continue or break 语句引用

    //     alert(i);
    // }


    // break and continue 
    // break and continue 语句可以和label语句联合使用,从而返回到代码中特定的位置。这种联合多发生在循环嵌套中
    var num = 0;

    

    // outermost:
    // for(var i=0;i<10;i++){
    //     for(var j=0;j<10;j++){
    //         if(i == 5 && j == 5){
    //             break outermost;  // 程序跳出两个循环
    //         }                     // 只有break,则最终结果是95
            
    //         num ++;
    //     }
        
    // }
    // alert(num); // 55

    // outermost:
    // for(var i=0;i<10;i++){
    //     for(var j=0;j<10;j++){
    //         if(i == 5 && j == 5){
    //             continue outermost;  // 跳出当前循环,并跳转到outermost(标签)下的for循环继续执行
    //         }                     
            
    //         num ++;
    //     }
        
    // }
    // alert(num); // 95

    
    for(var i=0;i<10;i++){
        for(var j=0;j<10;j++){
            if(i == 5 && j == 5){
                continue;  // 少执行了一次
            }                     
            
            num ++;
        }
        
    }
    alert(num); // 99

    // -----------------------------------------

    // with 语句: 将代码的作用域设置到一个特定的对象中 (大型应用程序中,不建议使用!!!)
    // 语法: with (expression) statement;
    // 目的:简化多次编写同一个对象的工作
    // 注意:严格模式下不允许使用with 语句
    var qs = location.search.substring(1);
    var hostName = location.hostname;
    var url = location.href;
    // ==========等价书写===============
    with (location){
        var qs = search.substring(1);
        var hostName = hostname;
        var url = href;
    }



    // switch 语句:特色使用
    // 1, switch 语句可以使用任何数据类型,包括字符串、布尔值和对象
    // 2, case的值可以是常量,变量,表达式
    var num = 23;
    switch (true){
        case num < 0:  // 表达式
            alert('num is less than 0!');
            break;
        case num > 0:
            alert('num is more than 0!');
            break;
        default:
            alert('num is 0!');

    }

    switch('hello world'){
        case 'hello' + ' world':
            alert('greeting was found!');
            break;
        case 'goodbye':
            alert('closing was found!');
            break;
        default:
            alert('unexpected message was found!');

    }

    
    </script>

<body>
    

</body>
</html>

你可能感兴趣的:(JavaScript,学习笔记,学习总结,语句)