Js运算符

46次阅读

共计 1301 个字符,预计需要花费 4 分钟才能阅读完成。

一、算术运算符

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
  • 用法: <a href =”javascript:void(f())”>

逗号 运算符

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

运算符的优先级

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

正文完
 0