Js运算符

一、算术运算符

Number 运算
  1. 加减乘除
  2. 余数 %

    • JS中-1%7是错误的先计算1%7然后再变成负数,得出-1
  3. 指数**
  4. 自增自减 a++ / ++a / a-- / -aa (尽量少用)

    • a++表达式的值是a,++a的表达式的值是a+1
    • a--表达式的值是a,--a的表达式的值是a-1
  5. 求值运算符号 +a 不是取正值
  6. 负数运算符 -a
String 运算
  1. 连接运算符 + '12'+'45' ='1245'

    • 只支持+法运算,其它运算不支持
    • 如果加号中运算中有非字符串,则转换为字符串,再相加,如果字符串-数字,则字符串转为数字,再相减(不同类型不要运算)

二、比较运算符

  1. >
  2. <
  3. >=
  4. <=
  5. ==

    • 模糊相等,经常会自动进行类型转换(不推荐使用)
    • 0==[],0=='0',0=='t' tab字符 , 但是[]!='0'!='t'
    // 自相矛盾
    var a =[] 
    if(a){console.log('a')}
    else{console.log('a不等于true')}//a
    
    var a =[] 
    if(a==true){console.log('a')}
    else{console.log('a不等于true')}//a不等于true
  6. !=
  7. === 全等

    • 基本类型看值是否相等,类型不相等直接返回false
    • 对象看地址是否相等
    • []!==[],{}!=={},空对象不等于空对象,NaN !==NaN
  8. !==

三、布尔运算符

  1. 或且非|| && !
  2. 短路逻辑

    • consloe&&console.log&&console.log('hi'),防御性编程,防止console不存在报错
    • a =a||100,100为a的默认值,这种写法有一个bug,5个falsy值,可用以下语法计算
      function add(n=0){return n+1}//n的默认值是0

四、进制运算符

  1. 或 :只要有一个为1,值就是1
  2. 与 :只有两个为均为1,值才为1
  3. 非: 取反
  4. 异或 :两个为相等为0,不相等为1
  5. 左移,右移<< >>
  6. 头部补零的右移运算符 >>>
二进制值 异或
a 1111 1111 1111
b 1010 1010 1010
计算值 1111 1010 0101
使用运算符计算值奇偶
  • 偶数 & 1 = 0
  • 奇数 & 1 = 1
使用运算符取整数值
//原理:位运算会抹除小数部分
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
使用运算符交换a b的值
  • 新语法[a,b] =[b,a]
  • 位运算 a^=b,b^=a,a^=b

点运算符,读取对象的属性值

*对象.属性名 = 属性值

  • 不是对象,也可以用点运算符,因为如果前面不是对象,则会转换成对象,然后运算点运算符

void 运算符

  • void 表达式或者语句
  • 求表达式的值,或执行语句,然后void 的值总是undefined
  • 用法:

逗号 运算符

  • let a=(1,2) a=2
let f = x=>{console.log('a');return x+1}
let f3= x=>(console.log('a'), x+1)//简写方式

运算符的优先级

  • 圆括号优先级最高
  • 逗号优先级最低

你可能感兴趣的:(javascript)