携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情
操作符
1) 算术运算符
-
非正常情况1
-
有特殊值字面量参与的运算
-
NaN参与的运算:得到的结果都是NaN
-
Infinity参与的运算,视情况而定:Infinity % 5 =NaN;5 / Infinity = 0;5 % Infinity =5;Infinity – Infinity = NaN;Infinity / Infinity = NaN;Infinity % Infinity =NaN
-
工作中不会使用特殊值运算,没有实际应用的意义,但是要了解,以防面试遇到
-
-
非正常情况2(其他类型的数据参与数学运算)
-
有字符串参与的+运算:+号变为连字符前后连接成整体字符串
-
隐式转换:除了字符串参与的+运算,其他情况下,所有其他数据类型参与数学运算时,计算机暗中将其他数据类型先自动转换成数字类型,再参与运算,这个过程中不需要使用parseInt()、Number()等方法,过程是暗中进行,这就是一个隐式转换的过程
-
其他的数据类型会隐式转换为数字类型:
-
对应数字:纯数字字符串会转为对应的数字“123”→123
-
转换为1:true
-
转换为0:false、null、“”空字符串、空白字符串
-
转换为NaN:undefined、非空非纯数字字符串
-
-
2) 比较运算符
- 也叫做关系运算符。一个比较运算符comparison operator比较它的操作数并返回一个布尔类型值。运算结果要么是true,要么是false
=== 全等,不光判断值相等,还要判断数据类型相等
!== 不全等,与全等完全相反
- 非正常情况1
- 特殊值参与比较运算
- NaN参与:不等于和不全等于结果是true,其他的都得到false
- Infinity参与的运算,视情况而定。Infinity-Infinity=NaN Infinity==Infinity和 Infinity===Infinity为true
- 非正常情况2(其他数据类型参与比较运算,但排除字符串与字符串的比较)
- 其他数据类型也会隐式转换为数字参与比较:“123”→123 true→1 false→0 null→0 undefined→NaN “”→0 “abc”→NaN
- null的判断比较特殊:null与0判断时,相等判断为false,>=和<=判断为true
- null==undefined
-
非正常情况3(字符串与字符串比较)
-
不会发生隐式转换为数字,而是比较两个字符串的Unicode编码顺序
-
字符编码顺序:从前往后0-9,A-Z,a-z,前面的小于后面的
-
比较时,不关心两个字符串的长度,从第一个字符串开始比较,一次往后顺延 比较,直到比较出大小,就不再往后比较
-
-
比较运算符的比较顺序
- 从前往后进行比较,前面得出的结果再和后面的比较:3>2>1 结果为false,3>2结果为true,true和1比较,结果为相等
3) 逻辑运算符
-
逻辑运算符常用于布尔类型值之间,当操作数都是布尔值时,返回值也是布尔值
-
&& 逻辑与运算符 “且”:false&&false结果为false
-
|| 逻辑或运算符:false||false结果为false
-
! 逻辑非运算符:!!!!!!false,从最近的开始运算,两个非相抵消(抵消时,从 左往右)
-
非正常情况1(隐式转换为布尔值的规律)
-
转为false:NaN、0、“”、空字符串、null、undefined
-
转为true:非0、非NaN数字、非空字符串
-
当它们用于非布尔值的时候,返回值就可能是非布尔值,(都只需要判断a)
-
即:(逻辑与a&&b)如果a能被转换为false,那么返回a;否则,返回b
(逻辑或a||b)如果a能被转换为true,那么返回a;否则,返回b
-
非运算的运算结果只能是true或false
-
-
逻辑运算符运算顺序
-
同种运算符从前往后运算(非为最近的开始运算)
-
三种运算符的运算顺序:!>&&>||
-
4) 赋值运算符
+= 加等于;-= 减等于;*= 乘等于;/= 除等于;%= 取余等于;++ 递加;-- 递减
5) 一元运算符
-
++或—符号可以写在变量前后:
-
a++:在参与程序过程中使用的原始没有加1的值,使用完后第二次用变量时,a用的就是加1后的新值。先参与,后自加。console.log(a++)输出的是a的值
-
+aa:参与程序过程中使用a加1后的新值,使用完后第二次用a变量时,a用的也是加1的新值。先自加,后参与。console.log(++a)输出的是a+1的值
-
6) 运算优先级(也叫做综合运算顺序)
1.()优先级最高
2.一元运算符:++ -- !
3.算术运算符:先*/%后+-
4.关系运算符:> >= < <=
5.相等运算符:== != === !==
6.逻辑运算符:先&&后||
7.赋值运算符