2021年最新web前端面试题及答案:JS基础知识专题

本文详细探讨了JavaScript面试中的核心知识点,包括闭包的定义、作用与应用场景,类的创建与继承的不同方法,事件流的概念及事件委托,new操作符的工作原理,以及bind、apply、call的区别。此外,还讲解了Ajax解决缓存问题的策略,JS的节流和防抖技术,以及垃圾回收机制等重要内容。通过对这些概念的深入理解,有助于提升前端开发者在面试中的竞争力。
摘要由CSDN通过智能技术生成

JavaScript面试题相关专题

本章节面试题与JavaScript相关,以专题形式推出便于各个击破。

2021年最新web前端面试题及答案:HTTP/HTML/浏览器专题
2021年最新web前端面试题及答案:CSS相关专题

说一下闭包

(1)什么是闭包: 闭包是指有权访问另外一个函数作用域中的变量的函数。 闭包就是函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。闭包就是函数的“堆栈”在函数返回后并不释放,我们也可以理解为这些函数堆栈并不在栈上分配而是在堆上分配。当在一个函数内定义另外一个函数就会产生闭包。

(2)为什么要用: 匿名自执行函数:我们知道所有的变量,如果不加上 var 关键字,则默认的会添加到全 局对象的属性上去,这样的临时变量加入全局对象有很多坏处,比如:别的函数可能误 用这些变量;造成全局对象过于庞大,影响访问速度(因为变量的取值是需要从原型链 上遍历的)。除了每次使用变量都是用 var 关键字外,我们在实际情况下经常遇到这样一 种情况,即有的函数只需要执行一次,其内部变量无需维护,可以用闭包。 结果缓存:我们开发中会碰到很多情况,设想我们有一个处理过程很耗时的函数对象, 每次调用都会花费很长时间,那么我们就需要将计算出来的值存储起来,当调用这个函 数的时候,首先在缓存中查找,如果找不到,则进行计算,然后更新缓存并返回值,如 果找到了,直接返回查找到的值即可。闭包正是可以做到这一点,因为它不会释放外部 的引用,从而函数内部的值可以得以保留。 封装:实现类和继承等。

(3)闭包形成的条件:
1.函数的嵌套
2.内部函数引用外部函数的局部变量,延长外部函数的变量生命周期

(4)闭包的应用:
1、模仿块级作用域。
2、保存外部函数的变量。
3、封装私有变量。闭包的两个场景,闭包的两大作用:保存/保护

(5)闭包的优点: 延长局部变量的生命周期,
(6)闭包的缺陷:
1.闭包的缺点就是常驻内存会增大内存使用量,并且使用不当容易造成内存泄漏
2.如果不是因为某些特殊任务而需要闭包,在没有必要的情况下,在其它函数中创建函数是不明智的,因为闭包对脚本性能具有负面影响,包括处理速度和内存消耗。

说一下类的创建和继承

(1)类的创建(es5):new 一个 function,在这个 function 的 prototype 里面增加属性和 方法。 下面来创建一个 Animal 类: // 定义一个动物类

 function Animal (name) {
    
	 // 属性 
	 this.name = name || 'Animal';
	  // 实例方法 
	 this.sleep = function(){
    
	 	console.log(this.name + '正在睡觉!');
	 }
 }
 // 原型方法 
 Animal.prototype.eat = function(food) {
   
 	console.log(this.name + '正在吃:' + food); 
 };

这样就生成了一个 Animal 类,实力化生成对象后,有方法和属性。

(2)类的继承——原型链继承 --原型链继承

function Cat(){
    } 
Cat.prototype = new Animal(); 
Cat.prototype.name = 'cat'; 
// Test Code 
var cat = new Cat(); 
console.log(cat.name); 
console.
  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北溟の魚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值