2020-12-30运算符

一、运算元

  • 运算元:运算符应用的对象。
    1 + 2 = 3
  • 一元运算符:只有一个运算元的运算符。
        var a = -1;
        a = -a;
  • 表达式:由运算符和变量/常量组成的式子
    a+1 1+2 3+5 5-4 a-b c*d

二、数学运算符

  • 常见的数学运算符
    + - * / % 指数:**

  • 1.多个数字和字符相加时,注意顺序不同,结果也会不同

        var a =  3 + 4 +'5' ; 75
        var a = '3' + 4 + 5 ;345

其它运算跟加不同
1-‘2’ -1
1 * ‘3’ 3

  • 2.余数运算符%
    返回前一个运算元被后一个运算元除之后得到的余数。
    5%2=1 5/2=2…1
    【注】运算结果的正负号是由第一个运算元的正负号决定的。
  • 3.指数运算符 **
    2**4 (2的四次方)
    平常运算符:左结合
    指数运算符:右结合
 // 2的8次方 256
    var a = 2 ** 2 ** 3;
    console.log(a); 
  • 4.数值运算符,负数值运算符
    + -
    作用在string与其他数据类型上时 是拼接
    作用在两个数值上时,是相加
    作用在一个数值上时 是正负运算。如果该数据类型不是数值,会自动转换为数值。
    a=-1;
    a=+a;

三、一元运算符

只作用在一个运算元上的运算符叫做一元运算符。
++ –
a++
先返回a的值,然后在对a进行+1运算。
++a
先对a进行+1运算 再返回a的值。
a–
先返回a的值,然后在对a进行-1运算。
–a
先对a进行-1运算 再返回a的值。
【强调】++ – 会被变量进行数值的修改

    var a = 10;
    // 10+8+8+7+7+6=46
    console.log(a-- + --a + a + --a + a-- + a);

四、赋值运算符

赋值运算符 右结合
基本:= 将右边的值赋值给左边的变量
复合:+= -= *=

    var a = 1;
    // 与a=a+3效果相等 4
    // a += 3;
    // 与a=a-2效果相等 -1
    a -= 2;
    console.log(a);

五、关系运算符

        >       大于
        <       小于
        ==      相等
        ===     严格相等
        !=      不等
        !==     严格不相等
        <=      小于等于
        >=      大于等于
    1. 比较结果为boolean类型
    2. 字符串比较
        会使用字典(ASCII码值)的顺序进行判断的.
        1.首先比较首字符大小。
        2.如果一方字符较大(较小),则该字符大于(小于)另外一个字符,算法结束。
        3.两个字符串的首字符相等,那么取下一位字符进行比较。
        4.重复以上步骤,直到算法结束或所有字符比较完成。
        5.若所有字符比较完成,且都相等,则两个字符相等。
    3.不同类型的比较
        字符串与数字比较时,若字符串不能转为数字,转换结果为NaN, 比较结果为false。

    ===
    相等比较的问题:不能区分0和false,空字符串等的区别。
    严格相等运算符,不会进行类型的自动转换,若类型不同,直接返回false。类型相等,再进行比较。

    4 对特殊值 null 和 undefined的比较
        null与undefined 非严格相等时,返回true
                        严格相等比较时,返回false
        对变量进行null,undefined判断时,尽量使用严格相等
 // 结果true
    // var a = null;
    // console.log(null == undefined);
    // 结果true
    // var a = true;
    // console.log(a == 1);
    // 结果false
    console.log("a" < "A");
    // 结果false
    console.log("a" > 1);
    // 结果true
    console.log("" == false);

六、逻辑运算符

    取反运算符:!
    与运算:&&
    或运算:||

    1.取反运算符
        用于将布尔值变为它的相反数。true=>false  false=>true;
    
    2.&&
        往往用于多个表达式的求值。
        左右两边的布尔值为true,结果的布尔值为true  若其中一个为false,结果的布尔值为false;
        运算规则:
            1.第一个运算元的布尔值为true时,返回第二个运算元的值。(不是布尔值)
            2.第一个运算元的布尔值为false时,返回第一个运算元的值。不会执行第二个表达式。

        &&可以连用,返回第一个布尔值为false的表达式的值。如果所有的表达式的布尔值都为true,返回最后一个表达式的值。
    3.||
        左右两边的布尔值只要有一个为true,结果的布尔值就为true。只有两边的布尔值都为false时,结果的布尔值才为false。
        运算规则:
            1.第一个运算元的布尔值为true时,返回第一个运算元的值。不会执行第二个表达式。
            2.第一个运算元的布尔值为false时,返回第二个运算元的值。

    4.&& 与 || 都有短路的效果。
<script>
    var a = true;
    var b = 1;
    // console.log("a"&&a&&b&&0);
    true && ++b;
    console.log(b);
</script>

七、三元运算符

        语法:表达式1?表达式2:表达式3
        表达式1是一个条件,值是boolean类型的。
        若表达式1的值为true,则执行表达式2的操作,并返回表达式2的结果。
        若表达式1的值为false,则执行表达式3的操作,并返回表达式3的结果。
// var b = 1;
    // var a = "0" ? ++b : --b;
    // console.log(a);
    var year = "2021";
    var month = "1";
    var day = "1";
    month = month < 10 ? "0" + month : month;
    day = day < 10 ? "0" + day : day;
    console.log("后天是:" + year + month + day)

八、优先级

        +-*/  先乘除后加减
        ()优先级最高
        = 赋值运算符的优先级最低


        ()
        一元运算符
        *、/、%
        +、-
        <= >=
        == != === !==
        &
        &&
        ?:
        复合赋值 += -=
        赋值 = 



        && 与 &
            &&有短路效果,而&是没有短路效果。
<script>
        var a = 0,
            b = 2;
        a && b++;
        console.log(b);
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值