Js前端面试题

本文详细探讨了JavaScript前端面试中的常见问题,包括基本数据类型、数据类型检测、null与undefined的区别、instanceof操作符、Object.is()与比较操作符、BigInt的用途、空对象的判断、new操作符的工作原理、Proxy的应用、文件延迟加载方法、ES6模块与CommonJS模块的区别、for...in与for...of的差异、原型和原型链、this的用法以及内存泄露的场景。通过对这些问题的解析,有助于开发者更好地掌握JavaScript的核心概念和技术。
摘要由CSDN通过智能技术生成

1. Js的基本数据类型

  1. null
  2. undefined
  3. string
  4. symbol
  5. bigint
  6. boolean
  7. number
  8. object

Es6 新增了symbol和bigint两种类型,symbol一般常用可以结合redux的action的type进行使用;bigint是大数处理,一般除非项目中涉及到很大的数才会用到。

2. 数据类型检测的方式有哪些

  1. typeof , 但是在判断Array null为object
  2. instanceof , 通过prototype 判断构造函数
  3. construct,通过构造函数来判断
  4. Object.prototype.toString()

一般项目中常用的判断方式可能是使用typeof,typeof null === "object" 是一个历史遗留问题.

3 null 和 undefined 区别

两者都是基本数据类型 undefined 在 JavaScript 中不是一个保留字,这意味着可以使用 undefined 来作为一个变量名,但是这样的做法是非常危险的,它会 影响对 undefined 值的判断。我们可以通过一些方法获得安全的 undefined 值,比如说 void 0。

但是现在大多数浏览器应该是都无法使用undefined作为一个变量名。

5 intanceof 操作符的实现原理及实现

intanceof 是判断构造函数的prototype是否存在于对象的原型链上,一直找到Object.prototype.

知道了原理,实现就很简单了,就是无限循环递归

function myInstanceOf(left:object, right:object{
   
  // Object.getPrototypeOf() 返回对象的原型
  const leftPrototype = Object.getPrototypeOf(left);
  const rightPrototype = right.prototype;
  while(leftPrototype) {
    if(leftPrototype === rightPro
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值