这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战
算数运算符
运算符 + - * / %
+ 加号运算符
功能:
1.对数字代数求和
2.对字符串进行连接
3.将一个数值转换成字符串 ——>数值+""
注意:任何数据类型+字符串都等于字符串
字符串拼接时:
数值+字符串——>将数值直接转为字符串拼接
字符串+字符串——>两者直接拼接
- 减号运算符
功能:
1.对数值进行减法操作;
2.对操作数进行“取反”操作;
3.将字符串转换成数值;数值型字符串-0=该数值,非数值-0==NaN
*** / 乘号、除号运算符**
功能:对两个数进行乘法或除法运算
正负规则:同号为正,异号得负
% 取余运算符
两个数相除取余数。
余数是正还是负,和第一个运算数的符号相同
复合赋值运算符 += -= *= /= %=
分别相加、相减、相乘、相除和取余后赋值。
自增和自减运算符
++ --
对唯一的运算数进行递增或者递减操作(每次加1或者减1)
注意点:
1.运算数必须是一个变量、数组的一个元素或者对象的属性
2.如果运算数是非数值则运算符会将它转成数值直接返回,不会再+或-
3.符号位置决定运算结果:
运算数之前——>先进行递增或者递减,再进行求值
运算数之后——>先求值,再进行递增或者递减操作
关系运算符(比较运算符)
大小运算 > < >= <=
如果左边 大于/小于/大于等于/小于等于 右边,返回true,否则返回false
操作规则:
1.数值与数值比较——>比较代数值
2.仅一个运算数是数值——>将另一个运算数转成数值,并比较它们的代数值
3.字符串与字符串——>逐个字符比较它们的Unicode数值
4.字符串与非数值——>将运算数转换成字符串进行Unicode比较
5.运算数即非数字也非字符串——>转换成数字或者字符串后进行比较
6.运算数无法转换成数值或者字符串——>返回false
7.与NaN比较——>返回false
等值运算
相等比较== !=
比较两个运算符的返回值,看返回值是否相等或不等
存在类型转换:
布尔值:true-----1;false-----0;
对象:调用valueOf()
字符串与数值比较:字符串转换成数值
比较原则:
1.null与undefined相等
2.NaN不等于任何数值,包括自身
3.对象,是不是同一对象,是的话 == 是true
相同比较 === !==
不存在隐示类型转换的绝对等于和绝对不等于,比较两个运算数的返回值及数据类型是否相同或不同
比较原则:
1.只有数据类型和数值相同才为相同
2.原始值和引用值之间是绝对不等于
3.引用值之间比较的是它们的引用(内存地址)
对象运算符
in:判断左边是否是右边的成员
instancesof:判断左边对象实例是否是右边的这个类或构造函数构造出来的
new:创建并初始化一个新的对象
delete:删除指定对象的属性,数组元素或者变量
.和[]:存取对象和数组元素
():函数调用,改变运算符的优先级等
逻辑运算符
&&逻辑与
规则:
1.第一个操作数是对象,返回第二个;
2.第一个操作数值为true,第二个为对象时,返回第二的对象;
3.两个都是对象时,返回第二个;
4.其中一个操作数是null或者undefined或者NaN时,对应返回null、undefined、NaN,如果同时是这三个值中的两个,返回第一个数;(暂时感觉0也是这个规律)
特性:
1.当且仅当两个运算数的值为true时,返回true,否则返回false;
2.短路操作:当第一个操作数的值是false时,则不再对第二个操作数进行求值了,返回第一个。
|| 逻辑或
规则:
1.第一个操作数是对象,返回第一个;
2.第一个操作数值为false,返回第二个;
3.两个都是对象时,返回第一个;
4.两个操作数是null或者undefined或者NaN时,对应返回null、undefined、NaN(0也是这个规律)
特性:
1.当且仅当两个运算数的值为false时,返回false,否则返回true;
2.短路操作:当第一个操作数的值是true时,则不再对第二个操作数进行求值了,返回第一个。
!逻辑非
非运算符返回值的为true的有:undefined、null、NaN、0、""
false的有:对象、非空字符串、非0数值
特性:
1.当运算的值为false则返回true,否则返回false。
2.连续使用两次,可将任意类型转成布尔值(true or false)。
位运算符
基础知识:
1.类型:
(1).有符号:数字位是 前31位 ,符号位是第32位
(2).无符号:只能是正数,第32位表示数值,数值范围可以加大
2.数值范围:-2147483648到2147483647
3.存储方式:
正数:纯二进制存储,31位中每一位表示2的幂,用0补充无用位
负数:2进制补码存储,补码的计算步骤:
(1.确定该数字的非负版本的二进制表示(例如,要计算 -18的二进制补码,首先要确定 18 的二进制表示)
(2.求得二进制反码,即要把 0 替换为 1,把 1 替换为 0
(3.在二进制反码上加 1
4.当做0来处理的特殊值NaN和Infinity
逻辑位运算:
返回值为1的:按位非~0、按位与&对应位全是1、按位或| 任何一位是1、按位异或^ 即不同时为1也不同时为0
返回值为0的:按位非~1、按位与&任意一位是0、按位或| 对应位全位0、按位异或^ 对应位全0或全1
位移操作:
左移<<:将数值的所有位左移指定的位数,所有空位用0补充。左移1位对其乘2,左移2位对其乘4,以此类推;
有符号右移>>:将数值的所有位右移指定的位数,移出的位被舍弃,保留符号位,右移1位对其除2,右移2位对其除4,以此类推(在舍弃移出位后的基础上除);
无符号右移>>>:
正数:与有符号右移结果相同
负号:会出现无限大的数值
复合赋值运算符
位操作符与等号结合,复合赋值不会有性能方面的提升
其他运算符
- ?: 条件运算符,又叫三目运算符,是简洁的if else
2.typeof 类型判定运算符
- , 逗号操作符,在一行语句中执行多个不同的操作,特殊的(1,2)会看一眼第一个,然后返回第二个数。
\