JavaScript 运算符

120 阅读1分钟

算术运算符

number 运算符

  • 加减乘除
  • 余数 x % 7
  • 指数 x ** 3
  • 自增自减 x++ / ++x / x-- / --x
  • 求值运算符 +x
  • 负数运算符 -x
  • 不同类型不要加起来

string 运算

  • 连接运算 '123' + '456'

比较运算符

  • >
  • <
  • >=
  • <=
  • ==
  • !=
  • ===
  • !==
  • 永远不要用 == ,用 === 代替
  • x === y 真值:
    • 基本类型看值是否相等
    • 对象看地址是否相等
    • NaN !== NaN

布尔运算符

或且非

  • ||
  • &&
  • !

短路逻辑

  • console && console.log && console.log('hi')
  • 以防 console 不存在报错
  • a = a||100 // n=0
  • a 的保底值

二进制运算符

或、与、否

  • | 两个位都为 0,则结果为 0,否则为 1
  • & 两个位都为 1,则结果为 1,否则为 0
  • ~

异或

  • ^
  • 两个位相同,则结果为 0,否则为 1

左移右移

  • << 和 >>

头部补零的右移运算符

  • >>>

使用与运算符判断奇偶

  • 偶数 & 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 的值

    var a = 5
    bar b = 8
    a ^= b
    b ^= a
    a ^= b
    console.log(a)   // 8
    console.log(b)   // 5

点运算符

语法

  • 对象.属性名 = 属性值

作用

  • 读取对象的属性值

疑惑

  • 不是对象,为什么也可以有属性
  • JS有特殊逻辑,点前面不是对象,就封装成对象
  • 但是用完之后就清除

void 运算符

语法

  • void 表达式或语句

作用

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

逗号运算符

语法

  • 表达式1,表达式2,...,表达式n

作用

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

使用

  • let a = (1,2,3,4,5)
  • 那么 a 的值就是5
  • let f = (x)=>(console.log('平方值为'), x*x)
  • 括号不能省去