JS运算符

179 阅读2分钟

运算符

算术运算符

  • number运算

    • 加减乘除
    • 余数 x%7
    • 指数 x ** 3
    • 自增自减 x++/++x/x--
    • 求职运算符 +a
    • 负数运算符 -x
  • string 运算

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

注意:尽量少用自增自减,因为容易你和别人都看不懂

不同类型不要加起来

比较运算符
 >
 <
 >=
 <=
 ==
 !=
 ===
 !==
 //忠告:永远不要使用==,用===

===没有任何费解,基本类型看值是否相等,对象看地址是否相等

唯一一个例外 NaN!=NaN

布尔运算符

  • 或且非

    • ||
    • &&
    • !
  • 短路逻辑

    • console&&console.log&&console.log('hi')
    • 以防console不存在而报错,这种写法叫做防御性编程
    • a=a||100 设定一个a的保底值

二进制运算符

  • 或、与、否

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

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

    • <<>>
  • 头部补零的右移运算符

    • >>>
使用与运算符判断奇偶
 偶数 &1 =0
 奇数 &1=0
使用~,>>,<<,>>>,|来取整
 console.log(~~,6.83)
 console.log(6.83>>0)
 console.log(6.83<<0)
 console.log(6.83|0)
 console.log(6.83>>>0)
使用^来交换a,b的值
 let a=5;
 let b=8;
 a^=b
 b^=a
 a^=b
 console.log(a) //8
 console.log(b) //5

奇葩运算符

点运算符
  • 语法

    • 对象.属性名=属性值
  • 作用

    • 读取对象的属性值
  • 有个疑问

    明明有的时候不是对象的变量,为什么也可以有属性?

    JS有特殊逻辑,点前面不是对象,就把它封装成对象,number会变成Number对象 string会变成String对象

    bool会变成Boolean对象,程序员从不用这三种对象,只用简单类型

void 运算符
  • 语法

    • void表达式或语句
  • 作用

    • 求表达式的值,或执行语句
    • 然后void的值总是为undefined
逗号运算符
  • 语法

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

  • 作用

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

  • 使用

    • let a=(1,2,3,4,5)
    • 那么a的值就是5
    • 通常会这么使用
     let f=(x)=>(console.log('平方值为'),x*x)
    

运算符的优先级

  • 汇总表位于MDN

    一共有20个运算符,怎么记忆呢

  • 技巧

    圆括号优先级最高,会用圆括号就行,其他一律不记