- JS运算符
- 算数运算符
除法不能除以0 那样会得到infinity 和 -infinity
余数 x%7
指数 x**3 就代表x的三次方
自增自减:a++ 和 ++a 的区别 a在前 值在前 a在后 值在后
意思就是 他们虽然都会自加一 但是a++的值就是原先的值 ++a的值就是加上一的值
--同上
求值运算符 就是求一个数的值 不改变正负
负数运算符 会改变原先的值 正的变负的 负的变正的
string运算符
连接运算 ‘123’+‘456’=‘123456’ 加号会把两个字符串连接起来
字符串只支持一个加号 其他都不支持
如果用数字和一个字符串相加 会先把数字变成一个字符串
如果用字符串减去一个数字 那么会先把字符串转为一个数字
尽量少用自加自减 并且不要把不同类型的东西相加
- 比较运算符
==模糊相等 ===全等 !=不模糊相等 !==不全等
- js三位一体
0==[] 0==’0’ 0==’\t’ 但是右边三个互不相等
忠告:永远不要使用==,用===代替
==的问题在于,他总是自作聪明(自动类型转换)
=== 基本类型看值是否相等 对象看地址是否相等 特例:NaN !=NaN []!=[] {}!={}
布尔运算符
或且非 || && !
a=a||100 的意思就是a的值是保底100 是会有bug的 五个falsy值
也可以使用最新的语法 直接在函数形参里 传一个 n=0 意思就是当你传进去的值为nan或者 undefined 就会默认为0
- 二进制运算符
或与否
|两个位都为0.则结果为0,否则为1
& 两个位都为1 则结果为1 否则为0
~
异或
^ 两个位相同 则结果为0
左移和右移
<< 和 >>移动1 如果右边有1 就会被吃掉
头部补零的右移运算符
使用与运算符判断就奇偶
代码
偶数& 1=0 奇数&1=1
使用~ >> << >>> | 来取整
使用^来交换ab的位置
但在js里有更方便的语法
var a=1 var b=2 [a,b]=[b,a] 就会交换ab的值
- 其他运算符
点运算符
语法:对象.属性名=属性值
作用:读取对象的属性值
有个疑问:
不是对象,为什么也可有属性?比如字符串.split()
JS有特殊逻辑 点前面不是对象 就会把他封装成对象
number会变成 Number对象
string会变成 String对象
bool会变成Boolean对象
void运算符 会永远得到undefined
- 运算符的优先级
太多不记 技巧:记住圆括号优先级最高就行
相同运算符
a+b+c 从左到右 从右到左 a=b=c=d
本文为张歆辉的原创文章,著作权归本人和饥人谷所有,转载务必注明来源