JavaScript 运算符

182 阅读3分钟

Number运算符

加减乘除     +,-,*,/
余数         x % y              10%7,余3
指数         x**3               7**3,7的3次方
求值运算符   +x                 求一下x的值,不会把x是负数不会变成正数
负数运算符   -x                 x为负数,会变成正数
自增和自减   x++,++x/x--,--x 

x++的值是x+之前的,++x的值是x+之后的
a在前表达式的值取之前的,a在后表达式的值取加之后的,自减也是

a++  ===  a+=1
尽量少使用自增自减,使用a+=1,因为a++和++a的值有区别,在for循环里使用a++

String运算符

连接运算
'123'+'456' = '123456'

+号可以把2个字符串连接起来,字符串只支持+号运算

数字加字符串,会先把数字变成字符串,在相加;字符串减数字,会先把字符串变成数字,在相减

比较运算符

>        大于
<        小于
>=       大于等于
<=       小于等于
==       模糊等于
!=       不模糊等于
===      全等于(基本类型看值是否相等,对象看地址是否相等)
!==      不全等于

三个不全等于   []!==[]  {}!=={}  NaN!==NaN

布尔运算符(或,且,非)

||    或
&&    且
!     非

a=a||100
a是真,值为a=a;a是假(不存在),a=100,保底值

add(a=0){return a+1}
新语法

console&&console.log&&console.log('hi')
如果console存在,console.log存在,就执行console.log('hi');防御型代码,怕console被删除

二进制运算(或,与,否)

|    或     a | b,2个位都是0,则结果为0,否则为1
&    与     a & b,2个位都是1,则为1,否则为0
~    否     ~ a,0为1,1为0
^    异或   a ^ b,2个位相同,则结果为0,否则为1

<<   左移        a << b,将a的二进制形式向左移b(<32)比特位,右边用0填充 
>>   无符号右移  a >> b,将a的二进制表示向右移b(<32)位,丢弃被移出的位
>>>  有符号右移  a >>>b,将a的二进制表示向右移b(<32)位,丢弃被移出的位,并使用0在左侧填充

0b11
0b的意思是告诉js我要写2进制的数了

(1)使用与运算符判断奇数偶数

偶数 & 1 = 0          偶数与一下1,结果是0
奇数 & 1 = 1          奇数与一下1,结果是1

(2)使用~,>>,<<,>>>,|来取整(位运算不支持小数)

console.log(~~6.83)    6,取反在取反
console.log(6.83>>0)   6
console.log(6.83<<0)   6 
console.log(6.83|0)    6
console.log(6.83>>>0)  6

(3)使用^来交换a,b的值

var a=5,var b=8
a^=b     /a=a^b
b^=a     /b=b^a
a^=b     /a=a^b

新语法
[a,b]=[b,a]

点运算符

语法
对象.属性名 = 属性值

作用
读取对象的属性值

不是对象,为什么也有属性值
JS有特殊逻辑,点前面不是对象,会封装成对象

number 变成Number对象
string 变成String对象
bool   变成Boolean对象

void运算符

语法
void 表达式或语句

作用
求表达式的值,或执行语句;然后void的值总是为undefined

需求
<a href='http://baidu.com' onclick='f(); return false;'>点击</a>
return假值可以阻止默认动作

<a href='javascript:void(f())'>文字</a>
使用void简写

逗号运算符

语法
表达式1,表达式2,........,表达式n

作用
将表达式n的值作为整体的值

使用
let a=(1,2,3,4,5)
那么a的值就是5

let f=(x)=>(console.log('平方值为'),x*x)
注意上面的括号不能省

运算符优先级(先算什么后算什么)

不同的运算符

1+2*3    是(1+2)*3    还是  1+(2*3)
!a===1   是(!a)===1   还是  !(a===1)
new Person().sayHi()  是什么意思

相同运算符
从左到右 a+b+c
从右到左 a=b=c=d

圆括号,最高优先级

详细资料点击:JavaScript 运算符