美文网首页
学习笔记4-表达式和运算符

学习笔记4-表达式和运算符

作者: kjiwu | 来源:发表于2020-02-12 14:41 被阅读0次

    表达式和运算符

    运算符

    运算符 说明 示例
    + 加法 3+4 //7
    - 减法 4-2 //2
    / 除法 4/2 //2
    * 乘法 3*4 //12
    % 取余 4%3 //1
    - 负号 -4
    + 正号 +4
    ++ 自增 ++x, x++
    -- 自减 --x,x--

    自增和自减

    前置自增(自减),优先增加(减少),然后赋值给变量;
    后置自增(自减),优先赋值给变量,然后增加(减少);
    如果自增(自减)不赋值给其他变量,前置后置效果是一样的;

        let number;
        let number1 = 10;
        number = ++number1;
        console.log(number, number1); // 11 11
        number = number1++;
        console.log(number, number1); // 11 12
    
        number = --number1;
        console.log(number, number1); // 11 11
        number = number1--;
        console.log(number, number1); // 11 10
    
        number1++;
        console.log(number1); // 11
        ++number1;
        console.log(number1); // 12
    

    运算符优先级

    高优先级运算优先低优先级运算符,搞不清楚时,善用括号

    比较运算符

    • 相等(===, ==)\
    1. ===,严格相等,引用的是相同的对象,或者拥有相同类型(基本类型)和相同的值;
    2. ==,非严格相等,属于同一个对象,或者强制转化为相同的值;
        let num = 33;
        let str = '33';
        console.log(num === str); // false
        console.log(num == str); // true
    
    • 关系运算符
      小于(<), 小于等于(<=), 大于(>), 大于等于(>=)
      比较运算符比较的是拥有自然排序特性的数据类型,比如,字符串,数字;

    比较数字

    • NaN与任何值不相等,包括自己(NaN)
    • 小数比较时,特别注意,他们之间不要直接比较,而是通过差值和Number.EPSILON比较;
        // 因为双精度问题,此循环会一致运行的
        let number = 0.1;
        while (true) {
            number += 0.1;
            if (number === 0.3) break;
            console.log(number);
        }
    
        let number = 0.1;
        while (true) {
            number += 0.1;
            if (Math.abs(number - 0.3) < Number.EPSILON) break;
            console.log(number);
        }
    

    真值和假值

    1. 假值
      • undefined
      • null
      • false
      • 0
      • NaN
    2. 除了假值,全为真值,惊喜不

    与,或和非

    与(&&) 或(||) 非(!)
    同时满足为真 满足一个条件即为真 取反
    x y x&&y
    false false false
    true false false
    false true false
    true true true
    x y x||y
    false false false
    true false true
    false true true
    true true true
    x !x
    false true
    true false

    条件运算符

    表达式1 ? 表达式1为true表达式 : 表达式1为false表达式

    位运算符

    运算符 描述 示例
    & 位与 0b1 & 0b0 = 0b0
    | 位或 0b1 | 0b0 = 0b1
    ^ 位异或 0b1 ^ 0b0 = 0b1, 0b1 ^ 0b1 = 0b0
    ~ 位非 ~0b1 = 0b0, ~0b0 = 0b1
    << 左移位 0b1 << 1 = 0b10
    >> 右移位 0b10 >> 1 = 0b1
    << 补零右移位 1 << 1 = 0b10

    类型判断运算符

    表达式 返回值
    typeof undefined "undefined"
    typeof null "object"
    typeof {} "object"
    typeof true "boolean"
    typeof 1 "number"
    typeof "" "string"
    typeof Symbol() "symbol"
    typeof function(){} "function"

    解构赋值

    解构赋值,允许把一个对象或者数组分解成多个单独的值

        const obj = { a: 2, b: 3};
        let {a, b} = obj;
        console.log(a, b); //2, 3
    
        const arr = [1, 2, 3];
        let [a, b] = arr;
        console.log(a, b); //1, 2
    
        const arr = [1, 2, 3, 4];
        let [a, b, ...rest] = arr;
        console.log(a, b, rest); //1, 2, [3, 4]
    

    展开运算符(...),应用于数组或者对象。 一个对数组或者对象进行展开插值 一个是对数组或者对象进行局部的赋值

    对象和数组运算符

    运算符 描述
    . 成员访问
    [] 成员访问
    in 判断属性是否存在
    new 实例化对象
    instanceof 原型链测试
    ... 展开运算符
    delete 删除运算符

    相关文章

      网友评论

          本文标题:学习笔记4-表达式和运算符

          本文链接:https://www.haomeiwen.com/subject/xsqcfhtx.html