本文共 3097 字,大约阅读时间需要 10 分钟。
目录
1.number运算
+ - * /
x%7
返回值是余数 难点:-1%7=-1
一个数除以另一个数,要是比另一个数小的话,商为0,余数就是它自己。x ** 3
x的三次方x++ / ++x / x-- / --x
只加/减一个数字 x在前,表达式的值就是取之前的状态,x在后同理 简单来说:x在前,值为前,x在后,值为后 +x
加号后面取任何数,相当于求这个数的值(不是取正,负数还是负)-x
取负,负负得正2.string运算
3.特殊套路
JS的加法如果发现你不按套路出牌,如提交 数字+字符串,它就会先把数字变成字符串,然后再把两个字符串加起来。而当提交 数字-字符串时,就会把字符串转化为数字,然后相减。4.忠告
a++
等价于a+=1
(a=a+1) 例外:一般只在for
循环中用i++
,因为这是约定俗成的写法>
<
>=
<=
==
:模糊相等!=
:不模糊等===
:全等!==
:不全等1.JS三位一体
0==[]
、0=='0'
、0=="\t"
[] != '0'
、[] != "\t"
、'0' != "\t"
忠告:永远不要使用==
,用===
,前者总是自动进行类型转换
2.x===y
真值表
[] !== []
根据内存图来判断,数组是对象,对象都有地址,两个空数组的地址不同,因此不相等。NAN !== NAN
强行记忆1.或且非
||
:或&&
:且!
:非2.短路逻辑
console && console.log && console.log('hi')
等价于console?.log?('hi')
(后者是可选链语法,下个版本出) 以防console
不存在报错 IE里面没有console
或者console
被人改写了,运行就会报错,因此做个自我保护,确保有console
才运行console
,这样确保不存在也不会报错(console.log同理)。//防御性编程if(console){ if(console.log){ console.log('hi') }}
a = a||100
a的保底值是100,如果a不存在,则让a=100 等价式子:下列为等价式子,直接在变量处给出n=0,则说明,当n为null
和undefined
的时候n=0
(空字符串时则返回字符串"1")function add(n=0){ return n+1}
1.或、与、否(只对二进制数有效)
二进制数标志:0b
如:0b11=3
注意:二进制默认转化为十进制,要用toString
才能显示二进制 格式:(二进制数).toString(2)
|
:或 两个二进制数对应位进行比较,都是0则结果为0,否则为1 如:(0b1111 | 0b1010).toString(2)
要变成字符串形式,括号内表示二进制 &
:与 两个都为1,才是1~
:否,1变0,0变1(研究一下补码)2.异或
^
3.左移右移
<<
和>>
4.头部补零的右移运算符
>>>
5.常考面试题
偶数 & 1 = 0
奇数 & 1 = 1
(数字).toString(2)
:变成二进制数,末尾为1则是奇数,为0则是偶数 0001
:让一个数字和做与运算,可以知道它最后一位是1还是0~、>>、<<、>>>、|
来取整 console.log(~~ 6.83) // 6
:二进制取反再取反,且二进制不支持小数,因此在计算时就把小数抹去了 console.log(6.83 >> 0) // 6
:往右移0位,位运算(二进制)会消除小数 console.log(6.83 << 0) // 6
console.log(6.83 | 0) // 6
:任何数字和0做或运算还是数字本身,位运算(二进制)会消除小数 console.log(6.83 >>> 0) // 6
^
来交换 a b 的值 JS渐变方法:[a,b] = [b,a]
位运算:a ^= b
, b ^= a
,a ^= b
(三次异或,跟负负得正原理有点像)1.语法
2.作用
3.疑问
var a = 1
a.toString()
a是个数字,为什么可以使用点a.toString
的时候要做三件事(创用滚) 1.发现a不是对象,JS就把a变成对象 变化过程:运行a.toString
(而数字没有toString)——创建一个新对象a'
(封装对象)——将1放进封装对象——并使封装对象其拥有一个指向Number.prototype
的原型 2.调用封装对象的toString
3.用完之后马上将封装对象删掉(封装对象都是一次性的) new Number()
,构造函数1.语法
void console.log('hi')
:就是打印出了hi2.作用
3.需求
1.语法
2.作用
3.使用
let f = x => (console.log('hi'),x+1)
返回值是最后一个x+1
注意:逗号一般要与括号连用,不然断句容易有问题,可以不写return又能写出两句的效果 等价于:let = x => { console.log('hi')return x+1}
1.不同运算符
!
的优先级高于===
2.相同运算符
a = (b = (c = (d = 2)))
3.优先级就是先算什么后算什么
4.技巧
转载地址:http://xbvi.baihongyu.com/