JS 前端基础面试题

  1. 创建对象的方法有哪些?
    使用 new 关键字调用构造函数创建对象,构造函数是专门用于初始化和创建对象的函数。
    使用对象字面量方式创建对象,通过一对大括号 {} 定义对象,内部包含对象的属性和方法。
    使用工厂方法创建对象,通过封装函数批量创建对象,统一返回对象实例。
  2. 数组是什么?声明数组的方法有几种?如何从数组中取值?
    数组是一组有序的数据集合,能够存储多个任意类型的值。
    声明数组的方法有两种,分别是数组字面量方式和构造函数方式。
    数组字面量方式通过方括号 \[\] 直接定义数组并赋值,是最常用的创建方式。
    使用 new Array() 构造函数方式创建数组,通过 new 关键字实例化数组对象。
    从数组中取值依靠数字下标索引,索引从 0 开始计数,通过 数组名下标 格式获取对应元素。
  3. js 遍历数组和对象的常用方法有哪些?
    遍历对象常用 for...in 循环,遍历对象自身及继承的可枚举属性。
    使用 Object.keys(obj) 获取对象自身所有可枚举属性名组成的数组。
    使用 Object.values(obj) 获取对象自身所有可枚举属性值组成的数组。
    遍历数组常用 forEach 方法,循环遍历数组每一项,无法中断循环。
    map 方法遍历数组并返回一个与原数组长度相同的新数组。
    for...of 循环直接遍历数组的元素值,支持中断操作,使用简洁。
  4. 数组相关的方法有哪些?请列举 5 个并说明用途
    push 方法向数组末尾添加一个或多个元素,返回新数组长度。
    pop 方法删除数组最后一个元素,返回被删除的元素。
    shift 方法删除数组第一个元素,返回被删除的元素。
    unshift 方法向数组开头添加一个或多个元素,返回新数组长度。
    splice 方法可以对数组进行添加、删除、替换操作,是数组多功能操作方法。
  5. split 和 join 的区别
    split 是字符串方法,将字符串按照指定分隔符分割成数组。
    join 是数组方法,将数组中的所有元素按照指定连接符拼接成字符串。
  6. pop、push、unshift、shift 的作用?
    pop 从数组尾部移除最后一个元素,改变原数组并返回被删除元素。
    push 向数组尾部添加一个或多个元素,改变原数组并返回新长度。
    unshift 向数组开头添加一个或多个元素,改变原数组并返回新长度。
    shift 从数组开头移除第一个元素,改变原数组并返回被删除元素。
  7. javascript 如何清空数组?(两种方式)
    第一种方式直接将数组长度赋值为 0,数组名.length = 0 实现清空。
    第二种方式直接给数组赋值空数组,数组名 = \[\] 快速清空数组。
  8. JavaScript 的循环语句有哪些?
    for 循环适用于已知循环次数的场景,通过初始值、条件、自增控制循环。
    while 循环先判断条件再执行循环体,条件不成立则不执行。
    do...while 循环先执行一次循环体,再判断条件,至少执行一次。
    for...in 循环用于遍历对象的可枚举属性或数组的下标。
    for...of 循环用于遍历可迭代对象,直接获取元素值。
  9. while 循环和 do while 循环有什么区别?
    while 循环先判断循环条件,条件成立才执行循环体,有可能一次都不执行。
    do...while 循环先执行一次循环体,再判断条件,无论条件是否成立,至少执行一次。
  10. forEach、for in 和 for of 的区别
    forEach 是数组方法,简洁遍历数组每一项,不能中断循环,无返回值。
    for...in 遍历键名,可遍历对象和数组,会遍历继承属性,不推荐遍历数组。
    for...of 遍历键值,支持数组、字符串等可迭代对象,支持中断,语法简洁。
  11. 请解释一下冒泡排序的原理?
    冒泡排序通过重复遍历数组,依次比较相邻两个元素,按照大小规则交换位置。
    每一轮遍历都会将当前最大或最小元素 "冒泡" 到数组末尾。
    每完成一轮排序,下一轮遍历减少一次比较,重复执行直到整个数组有序。
  12. 请将此数组排序 arr = 22,1,43,12,75,32
    使用数组 sort 方法升序排序:arr.sort((a, b) => a - b)。
    使用冒泡排序实现:外层循环控制轮数,内层循环比较相邻元素并交换位置,最终得到有序数组。
    排序结果为 1, 12, 22, 32, 43, 75
相关推荐
起这个名字20 小时前
Typescript 装饰器执行顺序
前端
星辰_mya20 小时前
CountDownLatch深度解析
java·开发语言·后端·架构
LDX前端校草20 小时前
position属性值及用法
前端·javascript·面试
laplaya20 小时前
使用 vcpkg 管理 C++ 项目中的依赖
开发语言·c++
Bigfish_coding20 小时前
前端转agent-第一周【python】-05 Ollama+Qwen3实战:会话记忆实战
前端
x***r15120 小时前
.NET 10 SDK 安装教程(dotnet-sdk-10.0.100-win-x64详细步骤)
java·服务器·前端
新新技术迷20 小时前
给 Agent 做"工具调用过程可视化",让用户看见它在干嘛
前端
feixing_fx20 小时前
选择器的威力——深入理解优先级计算与层叠规则
开发语言·前端·css·前端框架·html
代码小库20 小时前
【2026前端转 AI 全栈指南】第 1 章:前言 · 后端架构 · 章节导览
前端·人工智能·架构
晓131320 小时前
【Cocos Creator 3.x】篇——第四章 子系统
前端·javascript·游戏引擎