本文共 3093 字,大约阅读时间需要 10 分钟。
目录
1.number运算
+ - * /x%7返回值是余数 难点:-1%7=-1 一个数除以另一个数,要是比另一个数小的话,商为0,余数就是它自己。x ** 3x的三次方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/