这个系列我会记录一些平时看文章或遇到的相干知识点。
outline: 绘制于元素四周的一条线
与border不同的是,border会减少元素大小,然而outline不会
html * { outline: 1px solid red}// 勾销某个元素的轮廓input { outline: none;}
浮点数
浮点数表示法: 1.XXX
1.toFixed() // 报错, 可是通过Number(1).toFixed()创立根本包装类型(称为显示装箱)1.0.toFixed() // '1'1..toFixed() // '1'// 1. 和 1.0会被作为雷同的浮点数1. === 1.0 //true
二进制、十进制互转
十进制转二进制:NumberObject.toString(radix)
let num = 10num.toString(2) // 1010
二进制转十进制: parseInt(string, radix)
let num = 1010101parseInt(num, 2) // 85
替换两个变量的值
1、应用加减
a = a + bb = a - ba = a - b
2、应用位运算
a^=bb^=aa^=b
3、应用对象或数组
{ a = {a, b} b = a.a a= a.b}// 数组{ a = [a, b] b = a[0] a = a[1]}
4、应用解构赋值
[a, b] = [b, a]
5、应用运算优先级
a = [b, b = a][0]// 会先运行b = a失去b的值
一个对象数组依照另一个数组排序
const sortFunc = (propsName, refArr) => (prev, next) => { refArr.indexOf(prev[propsName]) - refArr.indexOf(next[propsName])}const age = [35,36,22,56,66]const objArr = [ {age: 36, name: 'a'}, {age: 22, name: 'b'}, {age: 35, name: 'c'}, {age: 56, name: 'f'}, {age: 66, name: 'g'}]const arr = objArr.sort(sortFunc('age', age))
ASI
主动分号插入(automatic semicolon insertion): 一种程序解析技术,它在 JavaScript 程序的语法分析 (parsing) 阶段起作用
ASI机制能够让你省略一些分号,然而有些中央的分号是不能省略:
1、for循环头部里的分号
2、作为空语句存在的分号
3、以[、(、\、+、-
结尾的语句后面的分号
for (var i = 0, len = a.length i < len i++) { msg += a[i] + ' '} // 报错,分号不能省略var a = 2/error/i.test('error') // 报错var num = 5+new Date - new Date(2009, 10)// 等价于var num = 5 + new Date - new Date(2009, 10)
位运算
1、与(&): 数位都为1时,返回1,否则返回0
0 & 1 => 01 & 1 => 11111 & 0001 => 00011111 & 1010 => 1010
2、或(|): 其中一位是1,则返回1,反之返回0
3、异或(^): 如果两个数位不同则返回1,反之返回0
0^0 => 00^1 => 11^1 => 01111^1011 => 01001111^0010 =>1101
4、非(~): 反转~1010 =>0101
5、零填充左位移(<<): 一个或多个零数位从右被推入,最左侧的数位被移除
5 // 000000000000000000000000000001015 << 1 // 10 00000000000000000000000000001010
6、有符号右位移(>>): 保留符号的右移。最左侧的数位被从左侧推入,最右侧的数位被移出
-5 // 11111111111111111111111111111011-5 >> 1 // -3 11111111111111111111111111111101
7、零填充右位移(>>>): 一个或多个零数位从左侧被推入,最右侧的数位被移出
5 // 000000000000000000000000000001015 >>> 1 // 2 00000000000000000000000000000010
妙用
1、应用&判断奇偶
偶数 & 1 = 0
奇数 & 1 = 1
2、应用~~、>>、 <<、 >>>、 |取整
~~3.9 // 3 向下取整2.3>>0 // 2 向下取整4.6 << 0 // 45.6 >>> 0 // 5 不可用于正数3.6 | 0 // 3
3、应用计算<<,>>乘除
// <<: 整数左移n位,相当于乘以2的n次方6 << 3 // 6 * 8 = 48// >>: 相当于除以2的n次方,再向下取整5>>1 // 2
4、利用^来实现比拟两个数是否相等:!(a ^ b)
!(4^4) // true!(5^7) // false
5、应用^值替换
a^=bb^=aa^=b
6、应用&、>>、|实现rgb和16进制色彩转换
// 16进制转RGBfunction hexToRGB(hex){ hex = hex.replace("#","0x"); let r = hex >> 16; let g = hex >> 8 & 0xff; let b = hex & 0xff; return "rgb("+r+","+g+","+b+")";};hexToRGB('#cccccc'); // rgb(204,204,204)// RGB转16进制色彩值function RGBToHex(rgb){ let rgbArr = rgb.split(/[^\d]+/); let color = rgbArr[1]<<16 | rgbArr[2]<<8 | rgbArr[3]; return "#"+color.toString(16);};RGBToHex('rgb(204,204,204)'); // #cccccc
参考