这个系列我会记录一些平时看文章或遇到的相干知识点。

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

参考