JS运算符

225 阅读2分钟

算术运算符(数学运算)

number 运算

  • 加减乘除

  • 余数 x % 7 注意:-1 % 7 的余数是-1(JS出错)

  • 指数 x ** 3

  • 自增自减 x++ / ++x / x-- / --x (x在前,值为前;x在后,值为后)

  • 求值运算符 +x

  • 负数运算符 -x (可以把负数变正)

string 运算

  • 连接运算 '123' + '456'(字符串只支持+运算,如果写了数字,会自动把数字变成字符串)

  • 注意:尽量少用自增自减

  • 不同类型的不要加起来

比较运算符

  • (>) 大于

  • <

  • (>=)大于等于

  • <=

  • == (永远不要用)

  • !=

  • ===

  • !==

2.png

3.png

4.png

NaN !== NaN

  • 强行记忆,特殊。

布尔运算符

或且非

  • ||

  • &&

  • !

短路逻辑

  • console && console.log && console.log('hi')

  • 以防 console 不存在报错

  • a = a || 100//if(!n){n=0}else{n=n}

  • a 的保底值(如果想要n=0,可以直接写到参数里)

二进制运算符

或、与、否

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

  • &

  • ~

异或

  • ^

  • 两个位相同,则结果为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

  • var b = 8

  • a ^= b

  • b ^= a

  • a ^= b

  • console.log(a) // 8

  • console.log(b) // 5

点运算符

语法

  • 对象.属性名 = 属性值

作用

  • 读取对象的属性值

有个疑问

  • 不是对象,为什么也可以有属性?'a-b-c'.split('-')

  • JS 有特殊逻辑,点前面不是对象,就把它封装成对象

  • number 会变成 Number 对象

  • string 会变成 String 对象

  • bool 会变成 Boolean 对象

  • 程序员从来不用这三种对象(==,++, new number()),只用简单类型

void 运算符

语法

  • void 表达式或语句

作用

  • 求表达式的值,或执行语句

  • 然后 void 的值总是为 undefined

需求

  • 点击

  • return 假值可以阻止默认动作

  • 文字

  • 改用 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

优先级汇总

汇总表位于 MDN

  • 一共有20个运算符

技巧

  • 圆括号优先级最高

  • 会用圆括号就行,其他一律不记