【web前端之超高频面试题整理】JS篇

简介:

JavaScript作为Web前端开发的核心语言,其面试题目覆盖了从基础语法到复杂的异步编程、内存管理等多个层面。本文精心整理了JavaScript高频面试题,涵盖闭包、事件循环、Promise、模块化、原型链、this 关键字等关键知识点。通过对每个问题的详细讲解与代码示例,本篇文章将为你提供一套全面的备考指南,助力你在面试中脱颖而出。

🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥
 


温馨提示:标题⭐越多,说明遇到的概率越大哦!

 

e2b3bfd23db3427782d4c8aae66b7d97.png

 

说说JS原型和原型链⭐⭐⭐

原型:函数都要prototype(显示原型)属性,而prototype会自动初始化一个空对象,这个对象就是原型对象,

原型对象中会有一个constructor属性,这个属性将指向了函数本身,

实例化对象都有一个_proto_(隐式原型)属性,_proto_属性指向原型对象

原型链:从实例对象往上找构造这个实例的相关对象,然后这个关联的对象再往上找,找到创造它的上一级的原型对象,以此类推,一直到object.prototype原型对象终止,原型链结束.

原型链中的原型对象中的内容,是会被不同的实例,所共有的

 

 

什么是闭包?闭包有什么作用?⭐⭐⭐

简单来说:函数跨作用于寻找变量就会形成闭包。

        由于在js中,变量到的作用域属于函数作用域,在函数执行后作用域会被清除、内存也会随之被回收,但是由于闭包是建立在一个函数内部的子函数,由于其可访问上级作用域的原因,即使上级函数执行完,作用域也不会随之销毁,这时的子函数---也就是闭包,便拥有了访问上级作用域中的变量权限,即使上级函数执行完后,作用域内的值也不会被销毁。

闭包解决了什么

        在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

        由于闭包可以缓存上级作用域,那么就使得函数外部打破了“函数作用域”的束缚,可以访问函数内部的变量。以平时使用的Ajax成功回调为例,这里其实就是个闭包,由于上述的特性,回调就拥有了整个上级作用域的访问和操作能力,提高了几大的便利。开发者不用去写钩子函数来操作审计函数作用域内部的变量了。

闭包有哪些应用场景

        闭包随处可见,一个Ajax请求的成功回调,一个事件绑定的回调函数,一个setTimeout的延时回调,或者一个函数内部返回另一个匿名函数,这些都是闭包。简而言之,无论使用何种方式对函数类型的值进行传递,当函数在别处被调用时都有闭包的身影

闭包的缺陷

        由于闭包打破了函数作用域的束缚,导致里面的数据无法清除销毁,当数据过大时会导致数据溢出

 

 

new操作符在创建实例的时候经历了哪几个阶段⭐⭐⭐

new创建了一个对象,共经历了4个阶段:

  1. 创建一个空对象
  2. 设置原型链
  3. 让实例化对象中的this指向对象,并执行函数体
  4. 判断实例化对象的返回值类型

 

call和apply的区别和作用?⭐⭐⭐

apply和call都是调用一个对象的一个方法,用另一个对象替换当前对象。

相同点:方法的含义是一样的,即方法功能是一样的。并且第一个参数的作用是一样的

不同点:call可以传入多个参数、apply只能传入两个参数,所以其第二个参数往往是作为数组形式传入

存在意义:实现(多重)继承

 

什么是防抖和节流?如何实现?⭐⭐⭐

防抖:多次触发某事件时,只执行最后一次。例如,搜索框输入时延迟发送请求。
节流:多次触发某事件时,限定在一定时间内只执行一次。例如,窗口滚动时控制滚动事件的触发频率。

// 防抖
function debounce(fn, delay) {
  let timer;
  return function(...args) {
    clearTimeout(timer);
    timer = setTimeout(() => fn.apply(this, args), delay);
  };
}

// 节流
function throttle(fn, delay) {
  let last = 0;
  return function(...args) {
    let now = Date.now();
    if (now - last > delay) {
      last = now;
      fn.apply(this, args);
    }
  };
}

 

如何解释JavaScript中的异步编程模型?Promise 是什么?⭐⭐⭐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值