当前位置:   article > 正文

2023前端常见面试题大全_2023前端面试题

2023前端面试题

1. 什么是作用域?

变量 产生作用的区域就叫做作用域

2. 作用域的分类

全局作用域

局部作用域

3.局部作用域的分类

函数作用域

块级作用域

4.作用域链

作用域链的本质是变量查找机制

5.作用域链查找规则是什么?

a. 会优先查找自己的作用域

b. 自己的作用域查找不到的话会往上查找父级直到全局作用域

6.什么是垃圾回收机制

JS 中一种自动回收或释放内存的机制 简称 GC

7.垃圾回收机制有几种算法?

引用计数法:IE采用的引用计数算法, 定义“内存不再使用”的标准很简单,就是看一个对象是否有指向它的引用

如果这个值的被引用了一次,那么就记录次数1 , 如果减少一个引用就减1。 如果引用次数是0 ,则释放内存。但它却存在一个致命的问题:嵌套引用

标记清除法:就是从根部(在JS中就是全局对象)出发定时扫描内存中的对象。 凡是能从根部到达的对象,都是还需要使用的。

无法由根部出发触及到的对象被标记为不再使用,稍后进 行回收

8.什么是闭包?

就是有权访问另一个函数作用域中变量的函数

9.闭包的表现形式?

在一个函数内部创建另外一个函数

10.闭包有什么作用?

封闭数据,实现数据私有,防止数据被意外修改

11.闭包的弊端

容易导致内存泄露

12.什么是变量提升?

使用 var 声明的变量,会被提升到函数或全局作用域的顶部,这个现象叫做变量提升。

13.用哪个关键词会产生变量提升?

var会存在变量提升,let/const 声明的变量不存在变量提升

14.什么是构造函数

是一种特殊的函数,主要用来初始化对象 ,同时可以用构造函数来快速创建多个类似的对象。

15.构造函数创建对象的过程

  1. 创建新对象
  2. 构造函数this指向新对象
  3. 执行构造函数代码,修改this,添加新的属性
  4. 返回新对象

16.伪数组转真数组的方法

1.Array.from

2.Array.prototype.slice.call( )

3…展开运算符

17.什么是JavaScript 中的包装类型

JavaScript 中,基本类型是没有属性和方法的,但是为了便于操作基本类型的值,在调用基本类型的属性或方法时 JavaScript 会在后台地将基本类型的值转换为对象,这些对象就是包装类型

18. JavaScript有哪些数据类型,它们的区别?

JavaScript共有八种数据类型,分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt

其中 SymbolBigInt 是 ES6 中新增的数据类型

Symbol 代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题。

BigInt 是一种数字类型的数据,它可以表示任意精度格式的整数,使用 BigInt 可以安全地存储和操作大整数,即使这个数已经超出了 Number 能够表示的安全整数范围。

这些数据可以分为原始数据类型和引用数据类型:

栈:原始数据类型(Undefined、Null、Boolean、Number、String、Symbol 、BigInt

堆:引用数据类型(对象、数组和函数)

19.isNaN 和 Number.isNaN 函数的区别

重点在于判断 是不是NaN,而不是 数字

  1. 函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。
  2. 函数 Number.isNaN 只会判断 传入的数据 是不是 一个 NaN,并且不会帮你做类型转换。

20.对原型、原型链的理解

原型,也叫原型对象,构造函数的一个属性,名字是 prototype,它本身也是一个对象类型。在构造函数的原型所添加的成员可以被实例所共享。

原型链,指的基于原型继承的那些对象中,它们是通过 原型 prototype 将彼此联系在一起的,这个关系就叫做原型链。

21.原型链-查找规则

① 当访问一个对象的属性(包括方法)时,首先查找这个对象自身有没有该属性。
② 如果没有就查找它的原型(也就是 proto 指向的 prototype 原型对象)
③ 如果还没有就查找原型对象的原型(Object的原型对象)
④ 依此类推一直找到 Object 为止(null)
proto 对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条路线

22.什么是递归

函数内部自己调用自己, 这个函数就是递归函数,往往都需要添加终止递归的条件。

23.什么是深拷贝 什么是浅拷贝

  1. 浅拷贝只是针对引用类型数据中的属性做了一层复制,如果被拷贝的属性也是引用类型,那么这个属性只是复制了这个引用地址。

    做了浅拷贝的对象之间可能会相互影响

  2. 深拷贝是针对引用类型数据中的属性做无限层级的复制,不管属性是值类型还是引用类型,会完整复制一份。 其在堆内存中完全开辟了一块内存地址,并将原有的对象完全复制过来存放

    做了深拷贝的两个对象之间相互不会影响

  3. 除了 递归克隆对象、JSON.stringify 两种方式做的拷贝,其他方法全部都是浅拷贝

24.call、apply、bind的区别

  1. 他们三都可以修改 this 指向,
  2. call、apply 在修改 this 指向的同时也会调用原函数、bind 只会返回修改 this 指向后的函数
  3. callapply 接收参数的方式不一样,call 类似普通函数一样接收参数、apply 接收的参数必须都放在一个数组内。

25.什么是防抖和节流

  1. 所谓节流,就是在连续触发的行为中控制它在 n 秒中只执行一次 可以用在 轮播图点击效果 、 鼠标移动、页面尺寸缩放 resize、滚动条滚动 等场景
  2. 所谓防抖,在单位时间内,某个动作只能执行一次,如果在单位时间内多次触发,那么只有最后一次有效,可以用在 搜索框 业务中

二、Ajax面试题

26.HTTP 状态码

成功(2XX)

状态码原因短语说明
200OK表示从客户端发来的请求在服务器端被正确处理
201Created请求已经被实现,⽽且有⼀个新的资源已经依据请求的需要⽽建⽴
通常是在POST请求,或是某些PUT请求之后创建了内容, 进行的返回的响应
202Accepted请求服务器已接受,但是尚未处理,不保证完成请求
适合异步任务或者说需要处理时间比较长的请求,避免HTTP连接一直占用
204No content表示请求成功,但响应报⽂不含实体的主体部分
206Partial Content进⾏的是范围请求, 表示服务器已经成功处理了部分 GET 请求
响应头中会包含获取的内容范围 (常用于分段下载)

重定向(3XX)

状态码原因短语说明
301Moved Permanently永久性重定向,表示资源已被分配了新的 URL
比如,我们访问 http
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/思考机器6/article/detail/62530
推荐阅读
相关标签