0%

javascript 运算符和表达式

运算符

运算符优先级MDN

算数运算符

运算符 作用
+ 求和
- 求差
* 求积
/ 求商
% 求余
++ i++:++ 在后,先把 i 赋值给 i++,然后 i 自增 1
++i:++ 在前,先让 i 自加 1,然后把 i 赋值给 ++i
-- i--:– 在后,先把 i 赋值给 i–,然后 i 自减 1
--i:– 在前,先让 i 自减 1,然后把 i 赋值给 –i

% 用途:

  • 求余,判断一个数是否能被另一个数整除,取余求得的余数为 0 则被整除,如判断一个数是否为偶数可以对 2 取余
  • 获取一个数字每个位上的数字,如 678 的百位 678/100,十位 678/10%10,个位 678%10
  • 获取某个范围内的随机数,任何一个数字对 6 取余,结果都位于 05 之间,取余后加 1 可以获得 16 随机数

赋值运算符

运算符 作用
= 赋值,等号左侧为变量,右侧为值,把等号右侧的值赋予左侧的变量
+= i+=6 等价于 i=i+6
-= i-=6 等价于 i=i-6
*= i*=6 等价于 i=i*6
/= i/=6 等价于 i=i/6

条件(比较)运算符

运算符 作用
> 大于
< 小于
>= 大于或等于
<= 小于或等于
== 值相等,不区别类型
!= 不相等,不区别类型
=== 值相等,严格区别类型
!== 不相等,严格区别类型
  • 比较运算符表达式最终的值都是布尔值

逻辑运算符

运算符 作用
&& 与,前面为真取后面的值作为表达式的值
前面为假取后面的值作为表达式的值
`
! 非,非真即假,非假即真,最终结果为布尔值

问号冒号表达式

?: 先判断问号前的表达式的值是否为真(不是布尔值会转化为布尔值),若为真则取冒号前表达式的值作为整个表达式的值,冒号后的表达式不会执行,若为假,则去冒号后的值作为整个表达式的值,冒号前的表达式不执行

数据类型转化

显式转化

调用函数 转化结果
Number() 纯数字字符串转化为数字,非纯数字字符串转化为 NaN,空字符串或空白字符串转化为 0
布尔值 true 转化为 1,false 转化为 0
undefined 转化为 NaN
null 转化为 0
parseInt() 从字符串开头提取整数,可以有空白字符
parseFloat() 从字符串开头提取小数,可以有空白字符
String() 任何类型转字符串会以字符串类型原样输出(相当于加引号)
Boolean() 数字类型的 0 和 NaNfalse,其余为 true
空字符串转化为 false,其余为 true,空白字符串也会转化为 true
undefined 转化为 false
null 转化为 false

隐式转化

在进行运算和条件判断是会自动发生类型转化

数字运算比较

  • 1/0 infinity
  • 0/1 0
  • 0/0 NaN
  • -1/0 -infinity
  • 1%0 NaN
  • NaN 参与运算结果为 NaN
  • NaN 参与比较大小结果为 false
  • NaN 不等于 NaN

字符串运算比较

  • 字符串相加为拼接字符串,其余均为转化为数字,大多数情况是 NaN
  • 字符串比较大小会根据字符串开头字符的 Unicode 码依次比较

布尔值运算比较

  • 布尔值运算时转化为数字(1 true,0 false)
  • 布尔值判等是不需要转化数字

undefined 运算比较

  • undefined 运算时转化为数字 NaN
  • undefined 判等时不需要转化数字

null 运算比较

  • null 参与运算时转化为 1
  • null 判等时不需要转化为数字
  • 空串和 null 不相等
  • falsenull 不相等
  • 0null 不相等
  • undefinednull 相等