表达式与操作符
JS 基本表达式
- 算数表达式
+ 加
- 加号有“加法”和“连字符”两种作用
- 如果加号两边操作数都是数字,则为“加法”,否则为连字符
- 减
* 乘
/ 除
% 取余
- a % b 表示求 a 除以 b 的余数,它不关心整数部分,只关心余数
- 默认情况,乘除法的优先级要高于加法和减法;必要时可以使用圆括号来改变运算的顺序
- 隐式类型转换
- 如果参与数学运算的某操作数不是数字型,那么Javascript会自动将此操作数转换为数字型(不包括 加号 运算符)
例:3 * "4" // 12
- 隐式转换的本质是内部调用 Number() 函数
- 关系表达式
- 大于 >
- 小于 <
- 大于或等于 >=
- 小于或等于 <=
- 等于 ==
- 不等于 !=
- 全等于 ===
- 不全等于 !==
- 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 && 6 ,结果为 6, 3 || 6 ,结果为 3
- 逻辑运算顺序的优先级是: 非 -> 与 -> 或
- 或
- 赋值表达式
- 赋值 =
- 快捷赋值
- +=
- -=
- *=
- /=
- %=
- 自增运算
- ++
- a++ 先用再加,++a 先加再用
- 面试题:var a = 3, b=4; alert(a++ + b++ + ++a + ++b)
- 自减运算 –
- 综合表达式
- 运算顺序:非运算 -> 数学运算 -> 关系运算 -> 逻辑运算
- 变量的范围表示
- 例如:验证变量 a 是否介于5到12之间。num1 >= 5 && num1 <= 12
表达式和运算符
- 5 + 3
- 表达式 = 操作数 运算符 操作数
有关 IEEE754
- Javascript 使用了 IEEE754 二进制浮点数算数标准,这会使一些个别的小数计算产生“丢失精度”问题
- 解决方法:在进行小数运算时候,要调用数字的toFixed()方法保留指定的小数位数
- 幂和开根号
- Javascript 没有提供幂计算、开根号的运算符。需要使用Math对象的相关方法进行计算。
- Math.pow(2,3) 幂计算,2的3次方
- Math.sqrt(81) 开根号运算符
- 向上取整 Math.ceil()
- 向下取整 Math.floor()