1. const、let 和 var 的区别是什么?
答案:
var
声明的变量是函数作用域或全局作用域,而const
和let
声明的变量是块级作用域。- 使用
var
声明的变量可以被重复声明,而const
和let
不允许重复声明同一变量。 const
声明的变量必须进行初始化赋值,而var
和let
声明的变量可以不进行初始化赋值。
2. 箭头函数与普通函数有何区别?
答案:
- 箭头函数没有自己的
this
,它会捕获所在上下文的this
值 - 箭头函数不能用作构造函数,不能使用
new
关键字实例化 - 箭头函数没有
arguments
对象,可以使用 rest 参数代替
3. 解释一下模板字符串及其优点
答案:
- 模板字符串是包含在反引号(`)内的字符串,可以跨行并包含插值表达式
- 通过
${}
语法可以方便地插入变量或表达式 - 模板字符串可以避免传统拼接字符串时的繁琐和易错问题
4. 什么是解构赋值?
答案:
解构赋值是一种方便的方法,可以让我们从数组或对象中提取数据并赋值给变量。例如:
// 数组解构赋值
let [a, b] = [1, 2];
// 对象解构赋值
let { x, y } = { x: 1, y: 2 };
5. 什么是 Promise?它的三种状态是什么?
答案:
Promise 是 JavaScript 中处理异步操作的对象,它代表了一个异步操作的最终完成或失败,并返回结果值。
Promise 有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。一旦进入 fulfilled 或 rejected 状态,Promise 就不会再改变状态。