面试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.

 

posted @ 2022-10-17 08:31  HaoyuSun  阅读(27)  评论(0)    收藏  举报