position
属性有哪些值, 列举出来其各自的作用static, relative, fixed, absoluate, sticky
https
原理两栏布局
function mySetTimeout(func) {
// 实现该函数, 需要考虑用多种方式解决
}
// 使执行下述代码的输出结果为"1234"
console.log(1);
setTimeout(() => {
console.log(4);
});
mySetTimeout(() => {
console.log(3);
});
console.log(2);
参考答案:
// 方法一: 直接用 Promise
function mySetTimeout(func, ...args) {
const _this = this;
return Promise.resolve().then(() => {
func.call(_this, ...args);
});
}
// 方法二: 利用 async await
async function mySetTimeout(func, ...args) {
await 0;
func.call(this, ...args);
}
TypeScript
实现防抖/节流, 要求用 ts 的泛型机制控制防抖与节流函数的参数与返回值类型相同// 这里的 ts 泛型限制参考了 lodash
function throttle<T extends (...args: any[]) => any>(
fn: T,
delay?: number
): (...args: Parameters<T>) => ReturnType<T> | void {
let flag = true;
return function (...args) {
if (!flag) {
return;
}
flag = false;
setTimeout(() => {
fn(...args);
flag = true;
}, delay ?? 0);
};
}
时间复杂度为 O(n) 且空间复杂度为 O(1)