【前端面试】JavaScript相关

let、const的区别

  • 块级作用域
  • 重复声明变量会报错
  • 不能在声明前访问

Promise相关

  • 解决回调地狱的问题
  • 异常穿透
  • Promise.all
  • Promise.allSettled
  • Promise.race
  • Promise.any

事件循环

见:浏览器架构和事件循环

this相关

见:this指向

什么是 Iterable 对象,与 Array 有什么区别

Iterable包含一个名为 [Symbol.iterator] 的方法,该方法返回一个迭代器(Iterator)对象。例如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const myIterable = {
data: ['a', 'b', 'c'],
[Symbol.iterator]() {
let index = 0;
return {
next: () => {
if (index < this.data.length) {
return { value: this.data[index++], done: false };
}
return { value: undefined, done: true };
}
};
}
};

异步加载 JS 脚本时,async 与 defer 有何区别