• 04.JS逻辑结构


    前言:
      学习一门编程语言的基本步骤
    (01)了解背景知识
    (02)搭建开发环境
    (03)语法规范
    (04)常量和变量
    (05)数据类型
    (06)数据类型转换
    (07)运算符
    (08)逻辑结构
    8.逻辑结构——logic
       程序=数据+算法
       程序分为顺序执行,选择执行,循环执行
       (1)流程控制—选择执行
          1)if语句 结果为真的时候
              if(条件表达式){
              语句1;
              }
              语句2;
              注意:if后的大括号中如果只有一行语句,则可以省略大括号.

        //if语句
        //如果满30就减15
        var total=32;
        if(total>=30){//如果total金额大于等于30
        total-=15;//在原来基础上减15
        }
        console.log(total);//17
    
        //练习:声明一个变量保存年龄,如果满18,打印成年人
        var age=19;
        if (age>=18)
        {console.log('成年人');
        console.log('可以去网吧');
        }
    
        var age=19;
        if (age>=18)
        console.log('成年人');//只有一行语句,的时候可以省略{},也可以写一行
    
        //练习:如果签名内容为空,设置默认签名
        //声明变量保存签名内容,如果签名为空,设置默认签名‘这家伙很懒什么也没留下’,打印签名内容
        var page='好热啊';
        //if (page==='')//判断是否为空。
        if (!page)
        // !''->!false -> true
        {page='这家伙很懒,什么也没留下';
        }
        console.log(page);//好热啊

              在条件表达式中,有一些值默认代表false
              数值型的false的情况:0,NaN,
              字符串型的false的情况:'',空字符
              未定义的false的情况:undefined
              空的false的情况:null

        if (0)
        { console.log('hello');
        }//不打印
    
        if (1)
        { console.log('hello');
        }//打印hello

       2)if-else语句 如果前面是假就执行后面的条件表达式
            if(条件表达式){
            语句1;
            }else{
            语句2;
            }

        //if-else语句
        //声明变量保存性别,0/1,如果是0打印女,否则打印男
        var sex=0;
        if (sex===0){
        console.log('女');
        }else{
        console.log('男');
        }
    
        //练习:声明变量分别保存用户名和密码,如果用户名是root,并且密码是123456,打印登录成功,否则打印登录失败
        var uname='rojot';
        var upwd='123456';
        if (uname==='root' && upwd==='123456'){
        console.log('登录成功');
        }else{
        console.log('登录失败');
        }

       3)if-else 嵌套,解决多项分支选择
            if (条件表达式1){
            语句1;
            }else ...if(条件表达式n){
            语句n;
            } else{
            语句n+1;//以上的条件表达式都是false,就执行该语句
            }

        //if-else 嵌套
        //声明变量保存一个人的成绩,根据成绩打印对应的汉字
        var score=56;
        if (score>=90){
        console.log('优秀');
        }else if(score>=80 && score<90 ){
        console.log('良好');
        }else if(score>=70 && score<80 ){
        console.log('中等 ');
        }else if(score>=60 && score<70 ){
        console.log('及格');
        }else{
        console.log('不及格');
        }

       4)switch-case   是一种特殊的多项分支语句,只有一种比较方式,就是全等于===
            switch-case ——转换器-情况
            break             ——结束打破
            switch(表达式){//通常是一个变量
            case 值1 ://如果表达式的值是 值1,
            语句1;
            break;//结束后面的语句
            ...
            default:
            语句n+1;//如果表达式的值和case中的值比较都是false,才会执行n+1
            }
            注意:表达式在和case后的值比较的时候,使用的是全等于,要求值和类型都相同。

        //switch-case语句
        //根据星期的状态码,来打印对应的汉字0-6
        var date=0;
        switch (date)
        {
        case 0:
        console.log('星期日');
        break;
        case 1:
        console.log('星期一');
        break;
        case 2:
            console.log('星期二');
        break;
        case 3:
            console.log('星期三');
        break;
        case 4:
            console.log('星期四');
        break;
        case 5:
            console.log('星期五');
        break;
        case 6:
            console.log('星期六');
        break;
        default:
        console.log('错误的星期代码');
        }

            总结1:对比 if-else嵌套和switch-case的区别
                      相同点:两者都可以用于多项分支语句
                      不同点:if-else可以判断相等或是不等的情况。使用 范围更广泛;
                                  switch-case只能用于全等于的比较,结构上给为清晰合理,可读性高,执行效率更高

       (2)流程控制——循环执行
          循环:一遍又一遍执行相同或是相似的代码。
          循环的两个要素:
          循环条件:控制执行循环的次数,
          循环体:重复执行的相同或是相似的代码
          1)while循环
              while(循环条件){
              循环体
              }//当循环条件为true的时候,循环体运行中,循环条件是false的时候,循环结束

        //while循环
        //循环产生10-20之间所有的数字,并打印出来
        var num=10;
        while (num<=20){//循环条件
        console.log(num);
        num++;//循环体
        }
        //练习:计算1-100之间所有偶数和
        var i=1;//声明变量i
        var sum=0;//声明变量sum
        while (i<=100){//循环条件,如果I小于等于100
            if(i%2===0){//计算为偶数的条件,
            sum+=i;     //sum等于sum加i
           }
        i++;//自增
        }
        console.log(sum);//2550

          2)break打破循环
              在循环中,可以提前结束任何形式的循环
              isNaN()判断一个值是否为NaN 是—>TRUE 不是—>false

        //break打破循环
        //打印数字1-10
        var i=1;
        while (true){//不停+1,没有结束
           console.log(i);//每循环+1一次就打印一次数字
           if (i===10){//当i为10的时候
           break;//结束循环
           }
           i++;//循环+1
        }//输出结果为1-10每个数字都打印一遍
        // 在这里需要注意console.log(i)和 i++;的位置,位置不一样,输出的效果不一样,我们这里的需求是打印数字1-10
    
        /*————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————*/
    
        //下面需要用到浏览器端函数,简单解释一下
        //alert()  弹出警示(消息)框
        //prompt() 弹出提示(输入)框,需要使用变量来保存输入的值,默认类型是字符串类型,如果输入框中内容为空,返回空字符(''),如果点击取消返回null、
    
        //练习:声明一个变量保存一个数字。无限循环弹出提示框,并输入数字,如果输入的数字大于保存的数字,弹出警示框提示 ‘big’,
        //如果输入的数字小于保存的数字,弹出警示框提示‘small’,否则弹出警示框提示‘right’,结束循环。
        var num=102;
        while(true){
            //弹出提示框
            var  str=prompt('input a number');
            //如果输入大于之前的值
            if (num<str){
            alert("big");
            //如果输入的值小于之前的数字
            }else if (num>str){
            alert("small");
            }else{
                //判断是否为数字,如果不是,提示
                var str2=Number(str);
                //isNaN,是否是NaN  ——>true
                if (isNaN(str2)){
                alert('input a number');
                }else{
                //猜对
                alert("right");
                break;
                }//注意这里空字符转数值为0
            }
        }

          3)do-while循环 先执行一遍循环体,在判断循环条件,即使循环条件为false,也会在执行一遍循环体。
               do{
               循环体
               }while(循环条件);

            //do—while循环
            //循环产生1-10之间所有的整数
            var i=1;
            do{
            console.log(i);
            i++;
            }
            while (i<=10);
    
            /*———————————————————————————————————————————————————————————————— */
    
            //练习:声明变量保存123456,循环弹出提示框输入密码,如果输入正确结束循环。
            var upwd="123456";
            do{
            //保存输入的密码
            var str=prompt('input password');
            //判断输入的密码是否正确
            if (str===upwd){//如果正确
               break;//结束循环
               }
            }
            while (true);//循环条件。
    
    
            //其他写法
            var upwd="123456";
            do{
            //保存输入的密码
            var str=prompt('input password');
            }
            while (str!==upwd);//如果输入的str保存的upwd不同,继续弹出窗口

          4)for循环 表达式1:初始值,表达式2:循环条件,表达式3:增量,可以分解多种可能 多个循环条件中只有最后的一个起作用。
               for(表达式1;表达式2;表达式3){
               循环体 ;
               }

        //for循环
        //计算1-20之间所有能被3整除的数字的乘积
        var sum=1;//声明变量sum
        for (var i=1;i<=20 ;i++ )//i初始值为1,循环条件为小于等于20,i执行自增
            {
            if (i%3===0){//如果i取余3等于0
            sum*=i//sum等于sum乘以i
            }
        }
        console.log(sum);//打印sum
    
        //练习:计算1-100的和
        for (var i=1,sum=0;i<=100;i++ ){
            sum+=i
        }
        console.log(sum);
        //其他写法
        var i=1,sum=0;
        for ( ;i<=100;i++ ){//第一个表达式可以不用,但是要保留位置上的;分号,代表第一个表达式为空
            sum+=i
        }
        console.log(sum);
    
        //练习:打印2000-2100年之间所有的闰年
        //闰年:4年一闰,并且不能被100整除,或者能被400整除
        for (var year=2000;year<=2100;year++){
            if (year%4===0 && year%100!==0 || year%400===0){
            console.log(year);
            }
        }

          5) continue跳过特定条件继续执行循环
               跳过后边的循环体,继续执行增量。

        //continue跳过
        //练习:打印1-100之间所有的整数,排除能被3整除和能被4整除的数字
        for (var i=1;i<=100 ;i++ ){//i初始值为1,循环条件为小于等于100,i执行自增
            if (i%3===0 || i%4===0){//如果i取余3等于0并且i取余4等于0
                continue;//跳过此条件继续执行循环
            }
            console.log(i);//打印i
        }

               总结2:break和continue的区别
                          break :结束循环,后续不会再执行后续的循环
                          continue:跳过后边的循环体,继续执行增量,也就是下一次循环。

       (3)循环嵌套——nest
          任何的循环之间可以相互嵌套

        //循环嵌套
        //循环打印五次五颗*
        for (var i=1,str='';i<=5 ;i++ ){
        //每次循环拼接*
            str+='*';
        }
        console.log(str);//打印结果
    
        //以上代码要执行五次,把以上代码再次放到另一个循环中
        //外层循环代表一共有多少行
        for (var j=1; j<=5 ;j++ ){
            //内层循环,控制每行有多少星星
            for (var i=1,str='';i<=5 ;i++ ){
            //每次循环拼接*
            str+='*';
            };
        console.log(str);
        }
  • 相关阅读:
    如何配置mysql的超时时间
    什么是P2P流标
    为何农历10月1号要祭祖上坟?原来有这么多讲究,你知道吗?
    “请家堂”的旧习俗不是封建迷信
    sourcetree合并分支
    mybatis sql参考
    source tree使用经验
    关于 early Z 与 z-prepass
    发现一个好工具RenderDoc
    HASHSET不能预留容量问题
  • 原文地址:https://www.cnblogs.com/oksana/p/12309236.html
Copyright © 2020-2023  润新知