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]。
相关推荐
浩少7028 小时前
【无标题】
java·开发语言
LaughingZhu8 小时前
Product Hunt 每日热榜 | 2026-05-25
前端·人工智能·经验分享·chatgpt·html
nnsix9 小时前
C# 字符串 根据换行符分割
开发语言·c#
Vallelonga9 小时前
Rust Conversion 工具 trait AsRef AsMut
开发语言·rust
Vallelonga9 小时前
Rust 中的“解引用”和智能指针与 MutexGuard 等
开发语言·rust
小鱼仙官9 小时前
Windonws 视频存储,10s/不限时
开发语言·qt·音视频
csbysj20209 小时前
框架:构建高效解决方案的基石
开发语言
轻颂呀9 小时前
C++11——并发库介绍
开发语言·c++
IT_陈寒9 小时前
Java的Optional差点让我掉坑里,这几个坑你别踩
前端·人工智能·后端