文章目录
1、var、let、const的区别
var的特点:
1、var声明的变量会提升
2、var声明的变量可以重复,后面的声明会覆盖前面的声明
3、var声明的变量在全局是全局变量,在局部是局部变量
4、在函数内不使用var声明,该变量是全局的
let的特点:
1、let声明的变量不会提升
2、let声明的变量不可以重复
3、let声明的变量只在当前块作用域中有效
4、let声明的变量会产生暂时性死区,只能在当前块作用域查找
const的特点:
1、const声明的变量必须初始化赋值
2、const声明的变量是常量,不可以改变
3、const声明的变量不可以重复
4、const声明的变量不会提升
5、const声明的变量只在当前块作用域中有效
6、const声明的变量会产生暂时性的死区,只能在当前块作用域查找
2、promise氛围哪几种状态?
promise设计初衷:解决回调地狱(回调函数层层嵌套就是回调地狱)
1、pending(初始化)
2、resolve(成功)
3、reject(失败)
3、箭头函数和普通函数的区别是什么?
普通函数:
1、普通函数通过function声明
2、普通函数this指向调用这个函数的地方
箭头函数:
1、箭头函数通过 => 声明
2、箭头函数this指向声明这个函数的地方
3、箭头函数不能用于创建构造函数
4、箭头函数没有内置对象
5、箭头函数没有prototype属性
6、call(),apply()可以调用箭头函数,但不能改变this的指向
7、如果有一个参数可以省略小括号
8、如果函数返回值只有一条语句,可以省略return和{}
4、==和 === 有什么区别
1、== 比较值是否相同
2、=== 全等比较,比较值和数据类型
5、使用解构赋值,实现两个变量的值的交换。
let a = 10;
let b = 20;
[b, a] = [a, b];
console.log(a); // 20
console.log(b); // 10
6、实现对象的深度拷贝?
1、JSON.stringify() 和 JSON.parse()
2、使用解构赋值
3、使用对象的合并
4、利用循环和递归的方式