JavaScript面试基础题

JavaScript的数据类型?基本数据类型和引用数据类型有什么区别?

整理:

  1. 本数据类型 String, Number, Boolean, Null, Undefined, Symbol(ES6标准引入)
  2. 引用数据类型Object=》【Array,Function,Object,Set,WeakSet,Map】
  3. 区别
    3.1 基本数据类型的值存储在栈中,引用类型存储在堆中。
    3.2 引用数据类型在中存储一个地址,这个地址指向堆中存储的变量
    3.3 当对基本数据类型变量进行计算时,直接操作值,而对引用数据类型进行计算时,操作的对象是引用

对象深拷贝?

整理:

  1. JSON.parse(JSON.stringify()),这种是最常用的深拷贝的方式,但是不能处理正则,日期和函数
  2. 递归实现深拷贝,在函数内判断类型。

JavaScript中遍历对象的方式?

  1. const keys = Object.keys().获取所有的对象上的keys
  2. for in 循环, for(let o in obj ){ console.log(obj[a])}

谈谈你对闭包的理解?

整理:
闭包在JavaScript高级程序设计中给的定义是指有权访问另一个函数作用域中变量函数
优点:
1. 实现缓存,不被垃圾回收,变量持久化。
2. 保护函数内的变量安全,不被外界所污染,变量私有化。
3. 利用闭包特性实现柯里化。
缺点:
1. 内存消耗,闭包产生的变量无法销毁,解决方法是可以在使用完变量后手动为它赋值为null,避免内存泄露。
2. 性能问题,由于闭包内部变量优先级高于外部变量,在查找上要多查一层作用域链,对速度有影响。


什么是原型和原型链?

整理:
闭包在JavaScript高级程序设计中给的定义是指有权访问另一个函数作用域中变量函数
优点:
1. 实现缓存,不被垃圾回收,变量持久化。
2. 保护函数内的变量安全,不被外界所污染,变量私有化。
3. 利用闭包特性实现柯里化。
缺点:
1. 内存消耗,闭包产生的变量无法销毁,解决方法是可以在使用完变量后手动为它赋值为null,避免内存泄露。
2. 性能问题,由于闭包内部变量优先级高于外部变量,在查找上要多查一层作用域链,对速度有影响。


Javascript中的宏任务和微任务?

  1. 微任务是用于插队的
  2. 微任务是快于宏任务的,但是一般是由宏任务开始执行。
  3. 注:为什么说微任务是用于插队的呢?因为每次执行宏任务之前都会看有没有微任务,不管微任务是何时加入队列的,都会清空微任务队列之后才会执行下一个宏任务
  4. 微任务>dom渲染>宏任务
    1)main script中的代码优先执行(编写的顶层script代码);
    2)在执行任何一个宏任务之前都会先查看微任务队列中是否有任务需要执行
    3)也就是宏任务执行之前,必须保证微任务队列是空的;
    4) 如果不为空,那么久优先执行微任务队列中的任务(回调)
    宏任务一般是:包括整体代码script,setTimeout,setInterval。
    微任务:Promise,process.nextTick。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值