js面时题整理-初级版-第一章

61 阅读2分钟

请说出js基础类型

  1. null
  2. undefined
  3. String
  4. number
  5. Boolean
  6. symbol
  7. BigInt

引用类型

  1. Object

请给出js判断类型得方法及其原理

  1. typeof:检测数据类型的原理就是通过检测这1-3位机器码实现检测不同数据类型。
  2. instanceof:用于检测构造函数 prototype 属性是否出现在某个实例对象的原型链上。
  3. object.prototype.toString.call(): JavaScript 调用 toString 方法将对象转换为一个原始值(由于Object.prototype.toString()本身允许被修改,像Array、Boolean、Number的toString就被重写过,所以需要调用Object.prototype.toString.call(arg)来判断arg的类型,call将arg的上下文指向Object,所以arg执行了Object的toString方法)。
  4. Array.isArrya():这个方法是通过查看 value 的 [[Class]] 属性来判断的。在 JavaScript 中,对象的 [[Class]] 属性是一个内部属性,用于确定对象的类型。数组的 [[Class]] 属性是 "Array"

请给出Map、Set和Object区别

Object:
  1. 本质上是键值对的集合(Hash结构),只能用字符串或者symobl做为key值
  2. 无序存储,需要手动计算大小,性能相对较低,内存使用较高‌。
  3. 使用点或括号操作符访问属性,使用in操作符检查属性是否存在。Object的键不可重复‌。
  4. Object是可枚举类型(如果考for of 与for in时该知识点是重点)
Map:
  1. 也是键值对的集合,但键的范围不限于字符串,可以是任意类型(包括对象、数组等)。Map用于存储键值对,且键值对是有序的‌。
  2. Map有序存储,性能较好,尤其是对于需要保持插入顺序的应用场景‌。
  3. Map拥有iterator
  4. Map拥有size属性
Set:
  1. 类似于数组,但成员值是唯一的,没有重复的值(无论是原始值或者是对象引用)。Set用于存储唯一值的集合‌(注意:向 Set 加入值的时候,不会发生类型转换,所以5"5"是两个不同的值)
  2. Set拥有iterator
  3. Set拥有size属性

请给出for in和for of区别

for in‌:适用于遍历对象的可枚举属性,包括对象自身属性和从原型链继承的属性。使用for in遍历对象时,可以获取对象的键名和键值。 ‌for of‌:不能直接用于遍历普通对象,因为普通对象没有部署原生的iterator接口。