03.JS运算符

前言:
   学习一门编程语言的基本步骤
 (01)了解背景知识
 (02)搭建开发环境
 (03)语法规范
 (04)常量和变量
 (05)数据类型
 (06)数据类型转换
 (07)运算符
7.运算符
 表达式:由运算符链接的操做数据,所组成的形式。
 运算符分为算数运算符,比较运算符,逻辑运算符,位运算符,赋值运算符,三目运算符
(1)算术运算符——math
        + (加)编程

    //
    console.log(3+2);//5

        - (减)编程语言

    //
    console.log(3-2);//1

        * (乘)学习

    //
    console.log(3*2);//6

        / (除)spa

    //
    console.log(3/2);//1.5

        % (取余)隔行换色,判断是否为闰年code

    //取余
    console.log(3%2);//1
    console.log(2%3);//2

        ++(自增)在原来的基础上加1blog

    //自增
    var a=1;         //此时a值是1
    a++;             //在原来的基础上加1,此时a值是2
    console.log(a);  //获取加1以后的a,此时a值是2
    console.log(a++);//在a=2的基础上加1,此时a值为3,存在内存之中,
    console.log(a);  // 从新获取a值,a值为3

        --(自减)在原来的基础上减1内存

    //自减
    var b=3;          //此时b值是3
    b--;              //在原来的基础上减1,此时b值是2
    console.log(b);   //获取减1以后的b,此时b值为2
    console.log(b--); //在b=2的基础上减1,此时b值为1,存在内存当中
    console.log(b);   //从新获取b值,b值为1

        console.log(a++);先打印a的值,在执行自增开发

    // 先打印a的值,在执行自增
    //1.声明一个变量
    var a=1;
    //此时a仍是1,打印就是1,打印完后,在执行自增,这时候a变成2,存在内存当中
    console.log(a++);//输出为1
    //从新从内存中获取a的值
    console.log(a);//输出为2

        console.log(++a);先执行自增,在打印a的值字符串

    //先执行自增,在打印a的值  
    //2.声明变量a
    var a=1;
    //先让a的值执行自增,此时a的值变成了2,而后在打印a的值就是2
    console.log(++a);//输出为2
    //从新获取值也是2
    console.log(a);//输出为2

    //综合
    var num=3;
    //第一个num的值打印为3,可是内存为2,影响内存中的储存的值,而后后面的num取内存中的值,因此是1,3+1=4,
    console.log(num--+--num);//4

(2)比较运算符——compare
        返回都是一个布尔型的值,若是数据类型不一样,会发生数据类型的转换
        >     (大于) console

    //> 大于
    console.log(3>4);//false

        <     (小于)

    //< 小于
    console.log(3<4);//true

        >=   (大于等于)

    //> 大于等于
    console.log(3>=4);//false

        <=   (小于等于)

    //< 小于等于
    console.log(3<=4);//true

        ==   (等于)    比较两个值是否相等

    //==  等于 只比较值,不比较类型
    console.log(7=='7');//ture

        !=    (不等于)

    //!=不等于
    console.log(3!=4);//true
    console.log(3!=3);//false
    console.log(3!='3');//false 仅比较值

        === (全等于) 不只比较值,还会比较类型是否相等

    //=== 全等于  比较值和类型
    console.log(7==='7');//false

        !==  (全不等于)

    //!==不等于
    console.log(3!==4);//true
    console.log(3!==3);//false
    console.log(3!=='3');//true 比较值和类型

        数据类型的转换

    //数字类型转换  字符串转成了数字
    console.log(13>'10');//ture
    //两个字符串比较,比较的是首个字符的Unicode码,3——> 51    1——> 49   a——> 97
    console.log('3'>'10');//true
    console.log('张铁牛'>'张大柱');//true
    console.log('张'.charCodeAt()>'张'.charCodeAt());//false
    console.log('铁'.charCodeAt());//38081
    console.log('牛'.charCodeAt());//29275
    console.log('大'.charCodeAt());//22823
    console.log('柱'.charCodeAt());//26609

        NaN和任何值比较(> < >= <= == === != !==),包括自身,都返回false。

    //NaN和任何值比较
    //3>NaN
    console.log(3>'10a');//false
    //3<NaN
    console.log(3<'10a');//false
    //3>=NaN
    console.log(3>='10a');//false
    //3<=NaN
    console.log(3<='10a');//false
    //3==NaN
    console.log(3=='10a');//false
    //3===NaN
    console.log(3==='10a');//false
    //NaN==NaN
    console.log(NaN==NaN);//false
    //NaN===NaN
    console.log(NaN===NaN);//false
    //3!=NaN
    console.log(3!='10a');//true
    //3!==NaN
    console.log(3!=='10a');//true

(3)逻辑运算符——logic
        and &&  而且       关联的两个条件都知足,结果是ture不然是false

    //而且 &&
    //判断一我的的工资是否在5000-8000支间
    var salary=7000;
    console.log(salary>=5000 && salary<=8000);//true
    //声明两个变量,分别保存用户名和密码,若是用户名为root,而且密码为123456,打印true,否者false。
    var uname="root";
    var password="123456";
    console.log(uname==="root" && password==="123457");//false

        or     ||    或者      关联的两个条件知足其一,结果是ture,否者是false

    //或者 ||
    //判断是否知足让座标准,儿童12岁如下或者老人65岁以上
    var age=50;
    console.log(age<=12 || age>=65);//false
    //声明变量保存用户,若是使用用户名root或者使用手机号码18112345678,知足其一,打印true,否者false
    var uname="root";
    var uname="18112345678";
    console.log(uname==="root" || uname==="18112345678");//true

        !      非   取反向   !ture=false !false=true

    //取反向 !
    var r=true;
    console.log(!r);//false

(4)逻辑短路,关注点不在结果是真假,关注点在后面的程序是否会执行!!!
        and=&& 而且     当第一个条件为false的时候,就不须要在执行第二条件

    //逻辑短路
    //and=&& 而且     当第一个条件为false的时候,就不须要在执行第二条件
    var num=3;
    num>5 && console.log(num);//false,不执行后续
    num<5 && console.log(num);//3

        or = ||     或者     当第一个条件为true的时候,就不须要执行第二条件
        注意事项:逻辑短路无需关注运算符的整个逻辑计算的结果是ture仍是false,重点看是否会执行第二条件。

    //or= || 或者     当第一个条件为true的时候,就不须要执行第二条件
    var num=3;
    num>1 || console.log(num);//true,后续不执行
    num<1 || console.log(num);//前面为false,继续执行,结果3

    //综合:变量保存年龄,若是满18周岁,打印"成年人"
    var age=19;
    console.log(age>=18 && "成年人");//成年人

(5)位运算符(了解便可)
        在执行运算的时候,计算机会把数据转成二进制,来进行运算
        按位于 (&),上下两位都是1,结果是1,不然是0.

    //按位于(&),上下两位都是1,结果是1,不然是0.
    /*
    011
    101
    ————
    001
    */
    console.log(3&5);//1

        按位或 (|),上下两位含有1,结果是1,否者是0,

    //按位或  (|),上下两位含有1,结果是1,否者是0,
    /*
    101
    111
    ————
    111
    */
   console.log(5|7);//7

        按位异或(^) ,上下两位不一样为1,相同为0.

    // 按位异或(^) ,上下两位不一样为1,相同为0.
    /*
    101
    111
    ————
    010
    */
    console.log(5^7);//2

        按位右移(>>),删除二进制的最后一位,成倍减小

   //按位右移(>>),删除二进制的最后一位,每增长一次右移,结果成倍减小一次
    console.log(8>>1);//4
    console.log(8>>2);//2
    console.log(8>>3);//1

        按位左移(<<),在最后一位增长一位0,成倍增加

    // 按位左移(<<),在最后一位增长一位0,每增长一次左移,结果成倍增加一次
    console.log(5<<1);//10
    console.log(5<<2);//20
    console.log(5<<3);//40

(6)赋值运算符
        =      等于

    //等于
    var a=1;//给a赋值为1

        +=    加等于

    //加等于
    //运算符的优先级,+号优先于=号
    var a=1;
    //第一种写法,在原来基础上+1,把结果赋给a
    a=a+1;
    console.log(a);
    //第二种写法,在原来基础上+1,把结果赋给a
    a+=1;
    console.log(a);
    //在赋值运算符中,加等于能够用于字符串拼接
    var str='a';
    str+='b';
    console.log(str);//'ab'

        -=    减等于

    //减等于
    var a=5;
    //普通写法
    a=a-1;
    console.log(a);//4

        *=    乘等于

    //乘等于
    //打八折,在原来的基础上打八折
    var price=1500;
    //赋值运算符写法
    price*=0.8;
    console.log(price);//1200

        /=    除等于

    //除等于
    //总分数552,求6科平均成绩
    var score=552;
    score/=6;
    console.log(score);//92

        %= 取余等于

    //取余等于
    //注意:运算符的优先级:先执行而且,再执行或者;
    //声明变量保存一个年份,判断这个年份是否为闰年,结合逻辑短路,若是是闰年就打印闰年
    var year=1999;
    (year%4===0 && year%100!==0 || year%400===0) && console.log("闰年");//false

(7)三目运算符
        一目:一个运算符链接一个数据
                 a++    b--    !c
        二目:一个运算符链接两个数据
                 a+1  a-1  a*1   a/1   a>1  a<1  a=1  a!1等等
        三目:两个运算符链接三个数据
                 条件表达式?表达式1:表达式2
                 若是条件表达式为ture执行表达式1,
                 若是条件表达式为false执行表达式2

    //三目运算符
    //根据年龄判断是否为成年人
    var age=19;
    age>=18?console.log('成年人    '):console.log('未成年人');//成年人    
    //声明两个变量来保存用户名和密码,若是用户名为root,而且密码为123456,打印成功,不然打印失败
    var uname='rot';
    var pwd='123456';
    (uname==='root' && pwd==='123456') ? console.log('登陆成功'):console.log('登陆失败');//登陆失败
    var uname1='root';
    var pwd1='123456';
    (uname1==='root' && pwd1==='123456') ? console.log('登陆成功'):console.log('登陆失败');//登陆成功