面试2022.10.17
1.Js数据类型
null undefined Number String Boolean Symbol BigInt Object
es6 新增 symbol 创建后独一无二不可变的数据类型 解决全局变量命名冲突问题 和 BigInt 任意精度的大整数,表示超出Number安全范围的整数
2.this指向
当函数不是对象的属性,直接作为函数调用时,this指向全局对象
当函数是对象的方法调用时,this指向这个对象
当函数用new调用时,this指向新创建的对象
apply call bind 方法(Call、Apply、Bind详细说说?)
apply 接收this绑定的对象和参数数组
call接收this 绑定的对象和各个参数
bind方法传入一个对象,返回this绑定传入对象的新函数
3.闭包
官方说闭包是一个有权访问另一个函数作用域中变量的函数,表现为一个函数嵌套一个函数
主要作用是创建私有变量,延长变量的生命周期不被垃圾机制回收
基于闭包将编写模块包裹,防止全局变量冲突,不能使用过多闭包,过多上下文不被释放,占用栈内存,会导致内存泄漏,使用完闭包函数手动释放
常见场景 节流防抖 IIFE 回调函数都是闭包
4.深拷贝和浅拷贝,能说说深拷贝吗?
深拷贝就是在开辟一块新的内存地址,用于存放被复制的对象 JSON.parse(JSON.stringify())
浅拷贝是新对象对旧对象内存地址的引用,他们共享同一块内存,新对象改变也会影响旧对象
Object.assign()方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象
5.

浙公网安备 33010602011771号