推荐的最佳实践

  • 一元+-可以代替Number() 进行类型转换
  • !! 和Boolean() 结果一样 — 用来获得当前值的布尔值
  • 用 || 赋值, 可以避免给变量赋值 null 或 undefined
  • Math.pow()有了自己的操作符**
  • 使用全等 === 而非相等 ==

    一元操作符

  • 前缀递增递减 ++a —a 变量的值都会在语句被求值之前改变

  • 后缀递增递减 a++ a— 变量的值都会在语句被求值之前改变

    1. let num1 = 2;
    2. let num2 = 20;
    3. let num3 = num1-- + num2;
    4. let num4 = num1 + num2;
    5. console.log(num3); // 22
    6. console.log(num4); // 21
    7. // 第一次num1 并没有改变,还是2,第二次num1才变成了1
  • +num 标识正值 也可以用于类型转换,可以转换为数字类型 同Number()

  • -num 标识负值 也可以用于类型转换,可以转换为数字类型

    位操作符 — 二进制

    32位整数位 前31位表示整数,最后1位表示符号位(正负) 在位操作的运算中 特殊值NaN 和Infinity 在位操作中都会被当成 0 处理, 不是数值会通过Number()转换成数值

  • 按位非 ~ —- 用于返回数值的补数 ~25 // -26 , 结果是25的负值 - 1,但是位运算符的操作会更快,~~可以与parseInt()表现类似。~是当前值取整取反减一,再次~就还是当前值取反-1,相当于原值。

  • 按位与 & —- 将数字转换为2进制后,进行与操作,看留0 还是 1,然后进行计算,全都为1才为1 ,其他为0
  • 按位或 | —- 与 “与”一样,只不过,或是有一个为1就为1,全为0才是0
  • 按位异或 ^ —- 全都为1 或者0 的时候为 0 ,其他情况都为1
  • 左移 << —- 转换为2进制后 向左移动对应位数,用0补位,符号位不算
  • 有符号的右移 >> —- 在前面补位0,并不会对符号位有影响。
  • 无符号的右移 >>> —- 在前面补位,会影响到符号位,有较大改变

    布尔操作符

  • 逻辑非 ! —- 取当前值的反向布尔值,!! 取当前值的布尔值 与Boolean() 表现一致

  • 逻辑与 && —- 一个为false全为false, 当有某一个值的时候在进行后面的操作
  • 逻辑或 || —- 一个为true就为true 多用于避免给变量赋值 null 或 undefined

    乘性操作符

  • *

  • \
  • %

    指数操作符

  • —- 可以代替Math.pow() ```javascript console.log(Math.pow(3, 2); // 9 console.log(3 2); // 9

// 指数赋值操作符= let squared = 3; squared = 2; console.log(squared); // 9

  1. <a name="RRwR8"></a>
  2. ### 加性操作符
  3. - + --- 可用于拼接字符串
  4. - -
  5. <a name="bsVN3"></a>
  6. ### 关系运算符
  7. > NaN跟什么比较都是false,其他比较会把值转换为布尔值之后比较
  8. > 字符串会比较unicode值,如果一方为数字,会把另一边字符串转换为数字比较,否则用unicode值比较
  9. > 字母比较时:注意大小写
  10. - >
  11. - <
  12. - >=
  13. - <=
  14. <a name="f4xhu"></a>
  15. ### 相等操作符
  16. - == 比较是否一致
  17. - === 比较类型和数值是否都一致 ---推荐使用
  18. <a name="Cq8pB"></a>
  19. ### 条件操作符
  20. ```javascript
  21. // 三元运算符
  22. variable = boolean_expression ? true_value : false_value;

赋值操作符

简单赋值用等于号(=)表示,将右手边的值赋给左手边的变量

可以和 += -= *= %= \= >>= 等 复合使用

逗号运算符

  1. let num1 = 1, num2 = 2, num3 = 3; // 进行多个声明
  2. let num = (5, 1, 4, 8, 0); // num 的值为 0 ,取最后一个值

问答题

6.13-3.5(操作符) - 图1

  1. The sum of 5 and 10 510 —- +号会被当成字符串拼接,如果需要打印运算结果,需要加(num1 + num2)
  2. true —- 两个都是字符串需要先进行转换为unicode后比较
  3. false false —- 因为NaN跟谁比较都是false