关于JavaScript里的三大结构的了解

1. 顺序结构 : 从上到下,从左到右!;
 2. 选择结构 : 逻辑分支;
 3. 循环结构 ;
 

分支语句

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 语句的基本结构 : 
        // 关键字(){
        // }

        // 衍生结构 : 
        // 关键字 {} 关键字 (){}
        // 关键字 (){} 关键字{} 
        // ... 

        // if  
        // if( 运算得到布尔值 : 基本操作 | 布尔值 : 不会有人去做的操作 | 数据 : 进阶操作 ){
        //     代码
        // }

        // if( false ){
        //     alert("你好,我执行了");
        // }

        // var num = 10;
        // if( num > 5){
        //     alert("这个数字大于5");
        // }
        
        // 假如 这个 num 是用户输入进来的数据那 ? 
        // prompt 
        // 确定 : 把用户输入的内容赋值给了 num 变量;
        // 取消 : 把 null 赋值给了 num;
        // var num = prompt("请输入任意数字");
        // if( num > 5){
        //     alert("这个数字大于5");
        // }
        // if else 
        // var num = prompt("请输入任意数字");
        // if( num > 5 ){
        //     alert("这个数字大于5");
        // }else{
        //     alert("这个数字小于5");
        // }

        // 如果用户点击了 取消 , 那么返回结果为null,则错误的执行了else代码块;
        // 修正BUG其实绝大多数情况下是在修正逻辑;
        // var num = prompt("请输入任意数字");
        // 这个数字必须大于5 ,并且不等于 布尔值;
        // 进阶版 : else if 可以写无限多个;
        // if() else if(){} else {}
        
        // 原因 : 
        // 确定 : 
        // 如果用户输入的内容小于5 :  弹出  "输入内容小于5";
        // 如果用户输入内容大于5   :  弹出  "输入内容大于5";
        
        // 取消 : 
        // 用户点击取消之后 : 运算结果是 null;
        var res = prompt("请输入数字");
        // // console.log(res);
        
        // // res : 用户输入的内容 ;
        if( res > 5 ){
            alert("用户输入内容大于5");
        // 逻辑漏洞 => 用户点击了取消 res : null;
        // 严谨逻辑 : 我不能只判断用户输入内容小于5 
        //           并且 
        //           用户不能点击取消;

        }else if(res < 5 && res != null ){
            alert("用户输入内容小于5");
        }
        // // 用户输入的内容是 大于 5 小于 5 还是取消 

        // // 刚才的问题 : 
        // // 因为 JavaScript typeof 关键字有一个漏洞, typeof null => 结果是 "object";
        // if(res < 5 && typeof res != "object"){
        //     alert("用户输入内容小于5");
        // }

        // switch  高级 :  小项目用不着,大项目必须用!;
        // var num = 10;
        // // switch ( 数据 )
        // switch( num ){
        //     // 定义条件 ;
        //     // num  和 case 后面数据比对的方式 是绝对等于;
        //     case 10 : 
        //         alert("hello world");
        // }
        // switch 更适用于精确的判断;

        // switch的特性;
        // switch 的穿透特性 :  如果 输入的数据满足了期中一个case条件,后面的条件会默认执行;
        // 阻止switch 穿透; => break;
        // var num = 4;
        // // switch ( 数据 )
        // switch( num ){
        //     case 4 : 
        //         alert("hello world 我是4");
        //         break;
        //     case 5 : 
        //         alert("hello world 我是5");
        //     case 6 : 
        //         alert("hello world 我是6");
        //     case 7 : 
        //         alert("hello world 我是7");
        // }

        // switch 的其他情况; 
        // 用 default 关键字接受其他情况;
        var num = 10;
        // switch ( 数据 )
        switch( num ){
            case 4 : 
                alert("hello world 我是4");
            case 5 : 
                alert("hello world 我是5");
                break;
            case 6 : 
                alert("hello world 我是6");
            case 7 : 
                alert("hello world 我是7");
            default : 
                alert("hello world 我是" + num);
        }

        // 总结 : 
        //  1. (数据) 和 case 数据 进行比对,比对方式是绝对等于;
        //  2. switch 在执行的时候有一个特性 : 穿透;  可以使用 break 阻止穿透;
        //  3. switch 结构的其余情况 可以使用default 接受;
        
        


    </script>
</body>
</html>

分支练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 判定一个年份是不是闰年;
        // 用户输入年份 => 我们判断输入内容是不是闰年 => 把结果告知给用户;

        // var year = 2020;
        // 算法 : 逻辑写算法 ;
        // 判定year符不符合闰年规则 : 四年一闰年,百年不闰年 , 四百年一闰年。
        // 如果年份模四等于 0 且 模 100 等于 0;
        // 或者 年份模四百等于0;

        //  四年一闰年   :  年份能被4整除,表示符合这个条件;
        //                 year % 4 === 0;
        //  百年不闰年   :  年份不能被100整除才是闰年;
        //                 year % 100 !== 0;

        // if( year % 4 === 0 && year % 100 !== 0){

        // }
        //  四百年一闰年 : 年份能被 400 整除,表示年份是闰年;
        //              : year % 400 === 0
        // if( year % 400 === 0 ){

        // }

        // 逻辑合体 : 
        // 写算式 的时候一定要关注运算顺序;
        // %    14 
        // ===  10 
        // !==  10
        // &&   6
        // ||   5
        // 运算顺序 : 
        // year % 4 === 0 && year % 100 !== 0  || year % 400 === 0
        //  %  ===  => % ;
        // 结果 === 0 && year % 100 !== 0  || year % 400 === 0
        // === && => ===
        // 结果 && year % 100 !== 0  || year % 400 === 0
        // && % => %;
        //结果 && 结果 !== 0  || year % 400 === 0
        //&&  !== => !== 
        // 结果 && 结果  || year % 400 === 0
        // && || => &&
        // 结果  || year % 400 === 0
        // || % => %;
        // 结果  || 结果 === 0
        // || === => ===
        // 结果(四年一闰年百年不闰年)  ||  结果 (四百年一闰年)

        // if( year % 4 === 0 && year % 100 !== 0  || year % 400 === 0){
            
        // }

        // 优化 : 
        // var year = prompt("请输入年份判定是否是闰年");
        // if( year % 4 === 0 && year % 100 !== 0  || year % 400 === 0){
        //     alert(year + "是闰年");
        // }else{
        //     alert(year + "不是闰年");
        // }

        // 判断一个数字是正数还是负数或者是零 

        // 情况 : 
        // 1. 正数 
        // 2. 负数
        // 3. 0

        // var num = prompt("请输入数字");
        // BUG : 有些bug是因为你不熟悉程序的特性而导致的;
        
        // 程序特性 : prompt你输入的内容,在代码之中获取,都是字符串!;
        // console.log(num)
        // 将输入进来的数据强制转换成数字再去进行判定;
        // num = Number(num);
        // 用户瞎输入;
        // Number 在强制转换失败之后, 转换出来 NaN;
        // 如何判定NaN;
        // NaN === NaN ? false; 
        // JavaScript专门判定 NaN 的 API; isNaN;
        // console.log(isNaN(num));

        // if( isNaN(num) ){
        //     alert("请输入纯数字");
        // }
        // if( num > 0){
        //     alert("正数");
        // }else if( num < 0){
        //     alert("负数");
        // }else if( num === 0){
        //     alert("0");
        // }

        // 判定取消按钮,实现逻辑嵌套;
        
        // if( num === null){
        //     alert("刷新后,可以重新输入内容");
        // }else{
        //     num = Number(num);
        //     // 粘贴刚才的确定逻辑代码;
        //     if( isNaN(num) ){
        //         alert("请输入纯数字");
        //     }
        //     if( num > 0){
        //         alert("正数");
        //     }else if( num < 0){
        //         alert("负数");
        //     }else if( num === 0){
        //         alert("0");
        //     }
        // }

        // 判定是否点击了取消 : 
        // 是 : 提示重新输入;
        // 否 : 1 . 判定是不是纯数字;
        //      不是 : 给提示;
        //      2 . 判定数字是大于零小于零还是等于0;


        // 根据数字判断今天是周几(假设1号是周一)
        // 有七种情况 : 
        // 周一 , 周二 .... 周日;

        // var date = 10;
        // // var day  = date % 7 
        // // 具体数据 , 多种情况 !;
        // switch(date % 7){
        //     case 1 : 
        //         alert("周一");
        //         break;
        //     case 2 : 
        //         alert("周二");
        //         break;
        //     case 3 : 
        //         alert("周三");
        //         break;
        //     case 4 : 
        //         alert("周四");
        //         break;
        //     case 5 : 
        //         alert("周五");
        //         break;
        //     case 6 : 
        //         alert("周六");
        //         break;
        //     case 0 : 
        //         alert("周日");
        // }

        // 根据成绩判断等级
        // 成绩等级是怎么划分的!;
        // 优秀 : 90 + 
        // 良好 : 60 ~ 89
        // 一般 : 0 ~ 59 
            
        // 成绩
        // var score = 95;
        // if( score >= 90 ){
        //     alert("成绩优秀")
        // // 错误示范 : 
        // // }else if( 60 <= score <= 89){
        // // 范围要用与连接 !;
        // }else if( score >= 60 && score <= 89){
        //     alert("成绩良好");
        // }else{
        //     alert("成绩一般");
        // }
        // var score = 95;
        // <= <=  => <= 
        // 先计算第一个小于等于;
        //  60 <= score => true;
        //  60 <= score <= 89
        //  true <= 89
        //  1 <= 89
        //  true;

    </script>
</body>
</html>

隐式数据类型转换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 隐式类型转换
        // 运算之中发生隐式数据类型转换;
        //  +  =>  1 + "1" => "11"

        // 分支结构相关!;
        // if( 这里 ! 会发生隐式数据类型转换 => 布尔值 ){}

        // 可以帮我们节省代码;

        // if( 123 ){
        //     alert("hello world");
        // }

        // 判定一个数字是奇数还是偶数;
        // var num = 10;
        // var res = num % 2 ;
        // // res => 1  => true  => 奇数
        // //     => 0; => false => 偶数;

        // if( num % 2 ){
        //     alert("奇数")
        // }else{
        //     alert("偶数");
        // }


    </script>
</body>
</html>

短路运算

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 短路 : 省去不必要的运算;
        // && 都成立才会返回true;
        // 如果左侧已经为false,则不会执行右侧的结果;
        
        // false && alert("hello world");
        // 这个运算可以替代 单分支结果 if(){}
        // 可以替代这个结构;
        var num = prompt("请输入一个数字");
        num > 10 && alert(num);

        // || 都不成立才会返回false;

        // true  || 不执行了
        // false || 执行;

        // 上面的逻辑使用 || 来完成;
        

    </script>
</body>
</html>

三目运算

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // ? : 
        // 布尔值 ? 代码1 : 代码2 ;
        // 如果布尔值为 true   则执行代码1 , 运算结果为 代码的执行结果;
        // 如果布尔值为 false  则相反;
        var num = prompt("请输入一个数字");
        num > 0 ? alert("数字大于10") : alert("数字小于10");
        // 这种写法 只允许存在一行代码不允许换行,复杂逻辑千万不要用这个鞋;

        // 作业提示;
        // switch(true){
        //     case 条件
        // }
    </script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/tony_yang6/article/details/106835300