js ...运算符_js 运算符

  • 算数运算符
  • number 运算
  • 加减乘除
  • 余数 x%7 余数是3
  • 指数 x**3
  • 自增自减 x++/++x/x--/--x
  • a++ 的值 是a+之前的值 (a在前表达式就是取a之前的状态)
  • ++a a 在后值在后
  • 求值运算符 +x
  • 负数运算符 -x

de8724fbcbfeb1fb1b3e141b97e214f8.png
负数的余数
  • string 运算
  • 连接运算 '123'+'456'
  • 尽量少用自增和自减--因为容易你和别人都记错
  • 不同类型的不要加起来
  • 比较运算符
  • >
  • <
  • >=
  • <=
  • == 模糊相等
  • != 不等
  • === 全等
  • !== 不全等

882cb729c7183b3af9062f54ecbcdf88.png

750c1fd9594d079c9f4eca528336ad41.png

65a1553a38608ea602242cd1b97f89ee.png
  • 布尔运算符
  • 或且非
  • ||
  • &&
  • !
  • 短路逻辑
  • console&&console.log&&console.log('hi')

727b2acff56cd46a7cab8e0cbac2f618.png
防御性编程
  • 以防 console不存在报错
  • a=a || 100
  • a的保底值

59e73aa25a8c1436bd0b3864e1cc0e71.png

b94ccc26c35f566a96dfe392f2c948b9.png
if(!n)(n=0)else{n=n} 几乎等价于 n = n || 0 (但是有漏洞)

797ec816ee053330a51db1d15154980f.png
function add(n=0) 最新语法

二进制运算符

  • 或,与,否
  • | 两个位都为0,否则结果为0,否则为1 (有一个1结果就为1)
  • & 两个都为1才是1

f03d558d2091c531804f2b9a8ab20245.png
  • ~
  • 异或
  • ^

e50f4c0a677460d1e89b24c019ab47cb.png
  • 两个位相同,结果为0,否则为1
  • 左移右移
  • <<和>>

b519c8d66acba09afce89ea97c72cd1a.png

头部补零的右移运算符

  • >>>

d85df52fa0ef7df9a6b694f12633516c.png
需要使用toString才能相加

a955b8e50a5f90d076dc08edf42d50bc.png

平时工作很少用到,但是面试喜欢问

使用与运算符判读奇数偶数

  • 代码
  • 偶数 & 1= 0
  • 奇书 & 1= 1

705833a104981ca8aca34765ec70d14a.png
不管什么数和001与运算后面的二三四位都是0

e81a5bf8516c625c0d1bd85f6bf2180f.png

使用 ~取反,>>,<<,>>> 位运算抹除小数

  • 代码
  • console.log(~~ 6.83) // 6 两次取反
  • console.log(6.83 >>0) // 6 往右移0位
  • console.log(6.83<< 0) // 6 左移0位
  • console.log(6.83 | 0 ) // 6 任何数和0 做或运算
  • console.log(6.83 >>> 0) // 6

使用^来交换 a b 的值

  • 代码
  • var a =5
  • var b = 8
  • a ^ = b // a = a^b
  • b ^ = a
  • a ^ = b
  • console.log(a) // 8
  • console.log(b) // 5

6260227002320890a9a6dfab1ef69c97.png
最新版语法 ab交换

奇葩运算符

点运算符

  • 语法
  • 对象.属性=属性值 a.name = 'frank'
  • 作用
  • 读取对象的属性中

5967c084c6f43dcc013d2115f87af6e7.png
a不是对象,但是会把a变成对象后再a.toString

c9e729775f88cd5326d6b9a8d3f5f037.png

有个疑问

  • 不是对象,为啥也可以有属性?'a-b-c'.split('-')
  • js有特殊逻辑,点前面不是对象,就把它封装成对象
  • number会变成Number 对象
  • string 会变成 String 对象
  • bool会变成 Boolean 对象
  • 程序员从来不会用这三种对象,只用简单类型

void 运算符

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

b1e46bd796f452a4d62282cb2eb2126c.png
  • 需求
  • <a href=''http://example.com"οnclick="f();return false;>点击</a>
  • return 假值可以阻止默认动作
  • <a href = "javascript:void(f())"> 文字</a>
  • 改用 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
  • 优先级就是先算什么后算什么

技巧

圆括号优先级最高 ,其他一律不记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值