1.选择器的优先级
内联样式>id选择器>id选择器>类选择器>元素选择器>通配*>继承的样式(没有优先级)
2.Symbol和 BigInt
1)Symbol
Symbol 值通过Symbol函数生成。这就是说,对象的属性名可以有两种类型:一种是字符串,另一种是Symbol类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。
Symbol函数前不能使用new命令,否则会报错。因为生成的 Symbol 是一个原始类型的值,不是对象
2)BigInt
BigInt数据类型提供了一种方法来表示大于2^53-1的整数。BigInt可以表示任意大的整数。
Number类型只能安全的持-9007199254740991(-(2^53-1)) 和 9007199254740991(2^53-1)之间的整数,任何超过这个范围的数值都会失去精度;而BigInt可以解决这个问题。
3.防抖和节流
1)防抖
防抖本质上就是以最后的操作为标准,打个比方,此时此刻我们都在排队等公交,司机说必须等到坐满才会发车,这时候的参照标准就是最后一个人上车,公交车好比我们的js代码,最后一个人就充当我们的执行条件。
2)节流
定时器实现节流;
闭包实现函数节流;
4.浏览器从输入URL到页面加载的全过程
*浏览器的地址栏输入URL并按下回车。
*浏览器查找当前URL的DNS缓存记录。
*DNS解析URL对应的IP。
*根据IP建立TCP连接(三次握手)。
*HTTP发起请求。
*服务器处理请求,浏览器接收HTTP响应。
*渲染页面,构建DOM树。
*关闭TCP连接(四次挥手)。
1)三次握手
*第一次握手
PC1使用一个随机的端口号向PC2的80端口发送连接请求,此过程的典型标志为SYN控制位为1,其他五位为0。
*第二次握手
这次握手实际上是分为2个步骤完成的。
首先,PC2收到PC1请求,向PC1回复确认信息。
并且,PC2也向PC1发送建立连接请求。
*第三次握手
PC1收到PC2回复,也要向PC1回复一个确认信息。
2)四次挥手
*服务器向客户端发送FIN,ACK位置1得TCP报文段。
*客户端向服务器返回ACK位置1得TCP报文段。
*客户端向服务器发送FIN,ACK位置1得TCP报文段。
*服务器向客户端返回ACK位置1得TCP报文段。
3)三次握手和四次挥手的本质是什么
三次握手的本质是确认通信双方收发数据的能力;
四次挥手的目的是关闭一个连接。
5.深浅拷贝
1)深浅拷贝的区别
当我们定义了一个变量 A ,当某一时间段,我们又声明了一个变量 B ,把A的值赋值给变量 B(let B = A)。 这里分两种情况:
情况一: 如果改变 B 的值,引起了 A 的变化,则我们称之为浅拷贝。(其实拷贝的是A的内存地址)
情况二: 如果改变 B 的值,没有引起 A 的变化,则我们称之为深拷贝。(自食其力)
2)浅拷贝拷贝啥,深拷贝拷贝啥
- 浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此如果其中一个对象改变了这个地址,就会影响到另一个对象。
- 深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。当对象和它所引用的对象一起拷贝时即发生深拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。