2021-07-06 JS运算符与逻辑分支

二进制

<script>
//二进制 0-1
//八进制 0-7
//十进制 0-9
//16进制 0-9 a-f
//32进制
//64进制

    //如何把一个十进制转成二进制:百度一下你就知道

       

    var n = 10111111;
    console.log("n转2进制" + n.toString(2));//n转2进制
    //  注意   加号左右两边有字符串那它就是拼接的意思

    var n = 1000100;
    console.log(parseInt(n, 2));//把2进制的n转换成10进制

    var m = 68;
    console.log(m.toString(16));//把十进制的m转换成16进制

    var n = 198;
    console.log(n.toString(8));

    // parseInt
    //     1.取整
    //     2.其他进制转成10进制    括号里的第2个,是描述它是几进制;

    // toString
    //     1.转字符串
    //     2.10进制转其他进制

    var n = 27;
    console.log(parseInt(n, 8).toString(2));//  把8进制的n转成2进制,
    //先把8进制转成10进制,再转成2进制;

</script>

3运算符

<script>
//运算符有哪些?
// 1.算术运算符
// + , - ,* ,/ ,%
// 注意:算术运算符,会产生隐式转换,除了+
// 把一个字符串的数值,变成了真正数值(隐式转换) +号不会隐式转换
// 强制转换 Number(),Boolean(),parseInt(),parseFloat()

    console.log("100" - 10);//90
    console.log("100" / 10);//10
    console.log("100" * 10);//1000
    console.log("100" % 10);//0     00除10的余数
    // 2.拼接运算符
    // + , 加号左右2边,只要有一边出现字符串,就是字符串的拼接
    // "100" + "200" == "100200"  拼接
    //隐式转换
    console.log("100" * 1 + "200" * 1); //300
    //强制转换
    console.log(Number("100") + Number("200")); //300
    // 3.逻辑运算符

    //  &&  ||  !
    //&& 与 || 被称之为 短路运算符  因为找到了一个假或真就行 

    // && 2边都满足,才是真的, 找假
    console.log(true && false && false); // false
    console.log(true && true);//true
    console.log(false && true && true);//false

    // ||  2边只有一边是真,就是真, 找真
    console.log(false || true || true);

    // !  取反
    console.log(!true);
    // ||  2边只有一边是真,就是真, 找真
    // && 2边都满足,才是真的, 找假
    var num1 = 1 && 2; // num1 2   &&是找假,1是真 2也是真,没假,但已经找到2了,所以把2赋值给左边
    var num2 = true || false; // num2 true-->1  trun转换成1
    var result = num1 * num2 + 3 // 2*1+3
    document.write(result); //5
    // && 用来做登录
    // || 用来做兼容

    // 4.关系运算符

    //
    // >,<,>=,<=,==,===, !=,!==
    //  ===是恒等于  要数值和类型都要相等.
    console.log(6 > 5);//true
    console.log(6 < 5); //false
    //
    console.log(6 >= 5);//true
    console.log(5 <= 5);//true
    console.log(6 == 6);
    console.log("6" == 6);// 只要值相等即可,不管类型
    // 3个等于,恒等于 (全等于),值与类型必须要一致
    console.log(6 === 6);//true
    console.log(6 === "6"); // 值相等,类型不相同,false
    console.log(6 != 5);
    console.log(6 !== 5); //true 6不恒等于5

    // 5.赋值运算符
    // += ,-=,*=, %=,/= , =
    var n = 10;
    // n=n+5;
    n += 5
    console.log(n);

    var n = 10;
    // n = n / 2;
    n /= 2;
    var n = 10;
    // n = n * 8;
    n *= 8;

    var n = 10;
    // n = n % 2
    n %= 2


    // 6.一元运算符(自增,自减)
    // ++在后,先取值,后运算

    var n = 10;
    console.log(n++); //10  
    console.log(n); //11

    var n = 10;
    // ++在前,先运算,后赋值
    console.log(++n);//11
    console.log(n); //11




    var n = 10;
    //       10    11    13    13
    var res = n++ + n++ + ++n + n++
    console.log(res); //47
    console.log(n);//14


    var n = 10;
    //        11    11    12     14
    var res = ++n + n++ + n++ + ++n;
    console.log(res);//48
    console.log(n);  //14

    var n = 2;
    //       2     3       5     6   6
    var res = n++ + n++ + ++n + ++n + n++
    console.log(res); //22
    console.log(n);   //7


    //  ++,-- 优先于 * , / 优先于 +

    var i = 12;
    //       12       14      30       15    14
    var sum = i++ + ++i + ++i * 2 + i-- + i--;
    //              85        13
    document.write(sum + " " + i); // "85 13"

    // 7.三目运算符
    //  条件满足,走最近,条件不满足,走远
    var res = (1 == 1 ? 100 : "你好")
    console.log(res);

    // 8.位移运算符
    //  <<
    //  >>
    // 把一个数,先转换成2进制,向左边移动n位,再有把这个转换10进制

    // 2 >> 2  ==  0;  右移运算符 2先转换成2进制 10.再向右移动2位.变成"00"10,把"00"转成10进制就是0.
    // 2-->  "10"
    //  " 10"
    //  " 00"10

    // 2 << 3  ==  8;  左位移.


    //关系运算符
    // > ,< >= ,<= ,==, ===,!=,!==
    // 1.如果2边都是字符串,就进行ascii比较
    // 2.如果一边是数字,一边是字符串,就把字符串转成数值,进行比较
    // 3.如果2边都是数值,直接比较大小
    // ASCII码,128个
    // 0-9  48-57
    // a-z  97-122
    // A-Z  65-90

    console.log("10" < "9"); //true
    console.log("10" < 9);   // false
    console.log(10 < 9);     //false

    // undefined == 0  undefined是undefined类型,0是数值类型,
    //不能进行比较,所以是false



    var res = (2 == 2 ? "嗯" : 1)
    console.log(res);

    var n = 10;
    var m = 20;
    var max;
    if (n > m) {
        max = n;
    } else {
        max = m;
    }
    console.log("最大值" + max);

    var max = n > m ? n : m
    console.log("最大数" + max);
    //写法一
    var n = 1994;
    if (n % 4 == 0 && n % 100 != 0 || n % 400 == 0) {
        console.log(n + "是闰年");
    } else {
        console.log(n + "是平年");
    }
    //写法2
    var year = 1998;
    var exp1 = year % 4 == 0 && year % 100 != 0;
    var exp2 = year % 400 == 0;
    if (exp1 || exp2) {
        console.log("闰年");
    } else {
        console.log("平年");
    }

    //多分支
    var weekday = parseInt(Math.random() * 10) % 5 + 1;
    if (weekday == 1) {
        console.log("今天训练胸");
    } else if (weekday == 2) {
        console.log("今天训练背");
    } else if (weekday == 3) {
        console.log("今天训练腿");
    } else if (weekday == 4) {
        console.log("今天训练手");
    } else {
        console.log("今天训练肩");
    }//最后一个 if也不用加 表达也不用加

    var y;
    var x = 100;
    if (x < 1) {
        y = x;
    } else if (x >= 1 && x < 10) {
        y = 2 * x + 1;
    } else {
        y = "嗯嗯";
    }
    console.log(y);

    var oscore = parseInt(Math.random() * 101);
    console.log("当前分数" + oscore);
    if (oscore > 85) {
        console.log("继续保持");
    } else if (oscore >= 75 && oscore <= 85) {
        console.log("继续加油");
    } else if (oscore >= 60 && oscore < 75) {
        console.log("一定要加油");
    } else {
        console.log("请主动退学");
    }



    //嵌套
    //方法一
    var n = parseInt(Math.random() * 10);
    var m = parseInt(Math.random() * 10);
    console.log("n:" + n, "m:" + m);
    if (n != m) {
        if (n > m) { console.log("n大于m"); }
        else { console.log("n小于m"); }
    } else {
        console.log("n=m");
    }

    //方法二   注意=是赋值   ==才是相等
    var n = parseInt(Math.random() * 10);
    var m = parseInt(Math.random() * 10);
    console.log("n:" + n, "m:" + m);
    if (n == m) {
        console.log("n等于m");
    } else {
        if (n > m) { console.log("n大于m"); }
        else { console.log("n小于m"); }

    }


    var num = prompt("请输入1-7的数值");
    switch (Number(num)) {
        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("今天是周天");
            break;
    }


    var grade = prompt("请输入分数(支持小数)");
    switch (Boolean(grade)) {
        case grade > 80 && grade <= 100:
            console.log("A");

            break;
        case grade > 70 && grade <= 80:
            console.log("B");

            break;
        case grade >= 60 && grade <= 70:
            console.log("C");

            break;
        case grade >= 0 && grade < 60:
            console.log("不及格");

            break;


        default:
            console.log("啥也不是");
            break;
    }


</script>

4 三大流程语句

<script>
//程序有3大流程语句
//1. 顺序 从上往下执行
//2. 分支 (单分支,双分支,多分支)
//3. 循环 (for,while, do..while)

    //单分支的语法
    // if(表达式){
    //  逻辑代码
    // }

    if (1 == 2) {
        console.log(1111111);
    }//条件不满足   所以console.log(1111111); 不执行




    console.log(2222222);


</script>

5 双分支语句

//语法
// if (表达式) {
//逻辑
// } else {
//逻辑
// }

    // 1、判断一个数是偶数还是奇数;
    //随机声明一个
    //Math.random() 0-1直接的值,不包含1
    var num = parseInt(Math.random() * 10);//这个代表大于等于0小于1的所有数乘10取整,也就是0-9;
    //Math.random()  代表0-1之间的任何值  大于等于0  到   无限接近于 1的值;
    if (num % 2 == 0) {
        console.log(num + "是一个偶数");
    } else {
        console.log(num + "是一个奇数");
    }

    // 2、求两个数的最大数;
    //方式1
    var n = 10;
    var m = 20;
    var max;
    if (n > m) {
        max = n;
    } else {
        max = m;
    }
    console.log("最大数:" + max);

    //方式2
    var max = n > m ? n : m;
    console.log("最大数:" + max);

    // 3、判断一个年份是闰年还是平年;
    //(1.能被4整除而不能被100整除.
    //(如2004年就是闰年, 1800年不是.)
    // 2.能被400整除.(如2000年是闰年))
    //写法2
    var year = 2018;
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
        console.log("闰年");
    } else {
        console.log("平年");
    }

    

    //写法2
    var year = 2020;
    var exp1 = year % 4 == 0 && year % 100 != 0;
    var exp2 = year % 400 == 0
    if (exp1 || exp2) {
        console.log("闰年"); //闰年
    } else {
        console.log("平年");
    }

6多分支语句

//语法
// if (表达式) {
// //业务逻辑
// } else if (表达式) {
// //业务逻辑
// } else if (表达式) {
// //业务逻辑
// } else {
// //业务逻辑
// }

    var weakday = parseInt(Math.random() * 10) % 5 + 1
    if (weakday == 1) {
        console.log("10元上网必须配可乐 " + weakday);
    } else if (weakday == 2) {
        console.log("8元上网 " + weakday);
    } else if (weakday == 3) {
        console.log("5元上网+加5毛散烟 " + weakday);
    } else if (weakday == 4) {
        console.log("5元上网 " + weakday);
    } else {
        console.log("与同学合资 打散烟 " + weakday);
    }

7嵌套

//语法
// if (表达式) {
// if (表达式) {
// if (表达式) {

    //         }
    //     } else {
    //         if (表达式) {

    //         }
    //     }
    // }

    //尽量减少if的嵌套,不方便维护,和理解
    //能用单分支,优先用单分支处理

    //  2个比较, 3种结果
    //1.多分分支
    var n = parseInt(Math.random() * 10);
    var m = parseInt(Math.random() * 10);
    console.log("n:" + n, "m:" + m);
    if (n == m) {
        console.log("相等");
    } else if (n > m) {
        console.log("n大于m");
    } else {
        console.log("n小于m");
    }
    //2.嵌套解决
    //方式1
    if (n == m) {
        console.log("相等");
    } else {
        if (n > m) {
            console.log("n大于m");
        } else {
            console.log("n小于m");
        }
    }
    //方式2
    if (n != m) {
        if (n > m) {
            console.log("n大于m");
        } else {
            console.log("n小于m");
        }
    } else {
        console.log("相等");
    }

8switch

//语法
// switch (表达式) {
// case 条件1:
// //逻辑代码
// break;// 中断,终止
// case 条件2:
// //逻辑代码
// break;// 中断,终止
// case 条件3:
// //逻辑代码
// break;// 中断,终止
// default:
// // 逻辑代码
// break;
// }

    //switch 的比较属于恒等于,在某一个 case里必须加 break,防止穿透
    //switch和case的值和类型都要一样,不然会报错;
    //快乐的一周
    var num = prompt("请输入1-7的数值");//prompt得到的是字符串
    console.log(num);
    switch (Number(num)) { //使用Number()方法,对num进行强制转换成数值类型
        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;
        default:
            console.log("浑浑噩噩的过了");
            break;
    }
    var num =1;
    console.log(num);
    switch (num) {
        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;
        default:
            console.log("浑浑噩噩的过了");
            break;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容