表达式与操作符

JS 基本表达式

  1. 算数表达式
    • + 加
      • 加号有“加法”和“连字符”两种作用
      • 如果加号两边操作数都是数字,则为“加法”,否则为连字符
    • - 减
    • * 乘
    • / 除
    • % 取余
      • a % b 表示求 a 除以 b 的余数,它不关心整数部分,只关心余数
    • 默认情况,乘除法的优先级要高于加法和减法;必要时可以使用圆括号来改变运算的顺序
    • 隐式类型转换
      • 如果参与数学运算的某操作数不是数字型,那么Javascript会自动将此操作数转换为数字型(不包括 加号 运算符)
      • 例:3 * "4" // 12
      • 隐式转换的本质是内部调用 Number() 函数
  2. 关系表达式
    • 大于 >
    • 小于 <
    • 大于或等于 >=
    • 小于或等于 <=
    • 等于 ==
    • 不等于 !=
    • 全等于 ===
    • 不全等于 !==
    • null 和 undefined 用 == 进行比较涉及隐式强制类型转换,ES5规范中规定
      • 如果 x 为null ,y为 undefined,则结果为true
      • 如果x为undefined,y为null,则结果为true
      • null 和 undefined 用 === 比较时结果为false,是因为类型不同
      • typeof null -> object
      • typeof undefined -> undefined
    • NaN 不自等
      • 如何判断某个值为 NaN ,isNaN
  3. 逻辑表达式
      • || 有真就真
      • && 都真才真
      • ! 表示 “非”,也可以称为“置反运算”
      • ! 是一个“单目运算符”,只需要一个操作数
      • 置反运算的结果一定是布尔值
      • !! 两个叹号是将这个值的相应布尔值展现出来
    • 短路计算(面试)
      • 例:3 && 6 ,结果为 6, 3 || 6 ,结果为 3
    • 逻辑运算顺序的优先级是: 非 -> 与 -> 或
  4. 赋值表达式
    • 赋值 =
    • 快捷赋值
      • +=
      • -=
      • *=
      • /=
      • %=
    • 自增运算
      • ++
      • a++ 先用再加,++a 先加再用
      • 面试题:var a = 3, b=4; alert(a++ + b++ + ++a + ++b)
    • 自减运算 –
  5. 综合表达式
    • 运算顺序:非运算 -> 数学运算 -> 关系运算 -> 逻辑运算
    • 变量的范围表示
      • 例如:验证变量 a 是否介于5到12之间。num1 >= 5 && num1 <= 12

表达式和运算符

  1. 5 + 3
    • 表达式 = 操作数 运算符 操作数

有关 IEEE754

  1. Javascript 使用了 IEEE754 二进制浮点数算数标准,这会使一些个别的小数计算产生“丢失精度”问题
  2. 解决方法:在进行小数运算时候,要调用数字的toFixed()方法保留指定的小数位数
  3. 幂和开根号
    • Javascript 没有提供幂计算、开根号的运算符。需要使用Math对象的相关方法进行计算。
    • Math.pow(2,3) 幂计算,2的3次方
    • Math.sqrt(81) 开根号运算符
    • 向上取整 Math.ceil()
    • 向下取整 Math.floor()