# 如何解决a标点击后hover事件失效的问题?
严格按照[L V H A]的顺序:Link => Visited => Hover => active
# 点击一个input依次触发的事件
onmouseenter => onmousedown => onfocus => onclick
# 响应式的好处
从用户的角度上出发,可以让用户获得更好的浏览体验,从开发者的角度上出发,降低了代码的重复性,开发人员可以将更多的精力放到其他部分
# null和undefined的区别
# 语义上
null:代表空对象undefined:代表未定义的值
# 检测上
typeof null === "object"typeof undefined === "undefined"
# 隐式类型转换上
Number(null) => 0Number(undefined) => NaN
# 其他角度
- 函数的默认返回值是undefined
- 原型链的终点是null
- JS底层中的对象机器码是以"000"开头,而null的机器码全都是0
# 冒泡排序算法和数组去重
# 冒泡排序
let arr = []
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
}
}
}
@前端进阶之旅: 代码已经复制到剪贴板
# 数组去重
- 双重for循环
- Set数据结构
- indexOf
- sort排序后再用for循环判断当前值是否等于上一个值和下一个值 更多的方法就在这里:JavaScript数组去重(12种方法)
# 描述一下Promise
Promise是JS异步编程解决方案之一,它的链式调用出现提高了代码的可阅读性和可维护性。在它之前我们只能通过[回调函数]和[事件]解决异步回调的问题,并且容易出现臭名昭著的[回调地狱]
# Promise.all中如果有一个抛出异常了会如何处理
会直接抛出错误。
# Promise.all的实现代码:
static all(promiseArr) {
let index = 0,
res = []
return new Promise((resolve, reject) => {
for (let i = 0; i < promiseArr.length; i++) {
