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;
    }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容