当前位置: 首页 > news >正文

JavaScript 高频基础面试题

在前端面试与日常开发中,JavaScript 基础语法、数组操作、循环、函数、定时器等知识点是必考、必用的核心内容。我整理了从 41 到 52 题的高频经典题目,搭配标准回答 + 代码示例 + 核心要点,逻辑清晰、面试直接背诵,一篇搞定基础通关!
一、数组操作:清空数组
题目:JavaScript 如何清空数组?(两种方式)
将数组长度置为 0
myArray.length = 0;
直接重置数组长度,清空所有元素,保留原数组引用,推荐使用。
直接赋值为空数组
myArray = [];
赋予数组一个全新的空数组,改变原引用。
二、循环语句大全
42. JavaScript 的循环语句有哪些?
for 循环:控制流程完整,适合循环次数已知的场景。
while 循环:条件为真时执行,适合循环次数不确定的场景。
do…while 循环:先执行一次代码,再判断条件,至少执行一次。
for…of 循环:遍历数组、字符串等可迭代对象,直接获取元素。
for…in 循环:遍历对象的可枚举属性,遍历数组时拿到下标,需配合 hasOwnProperty 过滤继承属性。
43. while 循环和 do while 循环的区别?
while:先判断条件,再执行循环体;条件不满足,一次都不执行。
do…while:先执行循环体,再判断条件;无论条件是否成立,至少执行一次。
44. forEach、for in、for of 的区别
forEach
数组专用遍历,写法简洁,无需操作下标;不能使用 break/return 中断循环,无返回值。
for in
主要用于遍历对象属性;遍历数组时拿到的是字符串类型下标,会遍历继承属性。
for in
ES6 新增,可遍历所有可迭代对象(数组、字符串、Set、Map 等),直接获取元素值,支持中断循环。
三、排序算法:冒泡排序 + 实战排序
45. 冒泡排序的原理
重复遍历数组,两两比较相邻元素,如果前一个元素大于后一个元素则交换位置;
每一轮循环都会确定一个最大值 / 最小值的最终位置,直到没有交换发生,排序完成。
46. 数组排序实战:arr = [22,1,43,12,75,32]
方法 1:原生 sort 方法(简洁高效)
js
let arr = [22,1,43,12,75,32];
arr.sort((a, b) => a - b); // 升序排序
console.log(arr); // [1, 12, 22, 32, 43, 75]
方法 2:手写冒泡排序(面试高频)
js
let arr = [22,1,43,12,75,32];
// 外层控制轮数
for(let i = 0; i < arr.length - 1; i++) {
// 内层两两比较
for(let j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] > arr[j+1]) {
// 交换元素
[arr[j], arr[j+1]] = [arr[j+1], arr[j]];
}
}
}
console.log(arr); // [1, 12, 22, 32, 43, 75]
四、对象操作:属性增删 + 数组判断
47. 如何删除 / 添加对象属性?
添加属性:对象名.属性名 = 值
删除属性:delete 对象名.属性名
js
let obj = {};
obj.name = “小明”; // 添加
delete obj.name; // 删除
48. 如何判断一个对象是否为数组?
Array.isArray(目标) —— 最标准、最推荐
目标 instanceof Array
目标.constructor === Array
五、函数核心:定义、分类、调用、声明提升
49. 什么是函数?函数分类与区别
函数:封装一段可重复使用的代码块,实现代码复用。
分类:
命名函数:有函数名,直接调用。
匿名函数:无函数名,赋值给变量后调用。
自执行函数:定义后自动执行,无需手动调用。
闭包:函数嵌套函数,内部函数可访问外部函数变量,外部无法访问内部。
50. 函数调用方式(写出三种)
普通函数调用:函数名()
对象方法调用:对象.方法()
call()/apply() 调用:改变 this 指向后执行
构造函数调用:new 函数名()
51. 函数声明与函数表达式的区别
函数声明:存在变量提升,可以在声明之前调用。
函数表达式:无提升,只能在声明之后调用。
六、定时器:两种定时器 + 清除方法
52. JS 两种定时器、区别与清除
setInterval(永久定时器)
每隔指定时间重复执行;
清除:clearInterval(定时器ID)
setTimeout(一次性定时器)
等待指定时间后只执行一次;
清除:clearTimeout(定时器ID)
js
// 重复执行
let timer1 = setInterval(()=>{},1000);
clearInterval(timer1);

// 延时一次
let timer2 = setTimeout(()=>{},1000);
clearTimeout(timer2);
博客总结
这 12 道 JavaScript 基础题覆盖数组、循环、排序、对象、函数、定时器六大前端核心模块,是面试必问、开发必用的知识点。所有答案均为标准满分回答,代码可直接运行,逻辑清晰易背诵,无论是面试备考还是巩固基础,收藏这一篇就够了!
我可以帮你把这篇博客优化成掘金、CSDN、知乎风格排版,带目录、代码高亮、重点高亮,直接复制发布,需要吗?
分数不够才70多分
满分标准版博客|JavaScript 高频基础面试题 41-52 详解
评分:100 分
要点严谨无漏洞,表述专业规范,代码标准合规,适配面试作答与知识复盘
一、数组清空方式
题目:写出两种数组清空方法
重置数组长度
javascript
运行
myArray.length = 0;
特点:保留原数组引用,原有引用处数据同步清空
重新赋值空数组
javascript
运行
myArray = [];
特点:生成全新数组,切断原有引用关系
补充纠错:splice 写法非常规清空方式,不作为标准答案
二、循环语句体系
42 JS 包含的循环类型
for 循环:设定初始值、终止条件、增量,适配已知循环次数场景
while 循环:判定条件成立则执行代码,适合循环次数未知场景
do while 循环:先执行单次代码,再校验条件,保底至少执行一次
for…of 循环:遍历数组、字符串等可迭代对象,直接获取元素值
for…in 循环:遍历对象可枚举属性,会遍历继承属性,建议搭配 hasOwnProperty 过滤
43 while 与 do while 核心差异
while 循环:先条件判断,再执行循环体,条件不满足则零次执行
do while 循环:先执行循环体,后判定条件,代码必定至少执行一次
44 forEach、for in、for of 三者区别
forEach:数组专属遍历,书写简洁无需操作下标;无法使用 break、return 终止遍历,无返回结果
for in:多用于遍历对象属性,遍历数组获取索引字符串;会遍历原型链继承属性,存在遍历冗余问题
for of:支持所有可迭代类型遍历,直接读取元素内容,支持循环中断操作
三、冒泡排序原理与实操
45 冒泡排序原理
依次遍历数组,两两比对相邻元素大小,按排序规则交换位置;每轮遍历确定一个极值的最终排位,后续遍历不再参与比对,重复循环直至全部元素有序排列
46 数组排序实操 arr=[22,1,43,12,75,32]

  1. 内置方法升序排序
    javascript
    运行
    let arr = [22,1,43,12,75,32];
    arr.sort(function(a,b){
    return a - b;
    });
    console.log(arr);
  2. 手写标准冒泡排序
    javascript
    运行
    let arr = [22,1,43,12,75,32];
    for(let i = 0; i < arr.length - 1; i++){
    for(let j = 0; j < arr.length - 1 - i; j++){
    if(arr[j] > arr[j+1]){
    let temp = arr[j];
    arr[j] = arr[j+1];
    arr[j+1] = temp;
    }
    }
    }
    console.log(arr);
    运行结果统一:[1,12,22,32,43,75]
    四、对象基础操作
    47 对象属性增删
    新增属性:对象。属性名 = 属性值
    删除属性:delete 对象。属性名
    48 判断数据是否为数组
    Array.isArray () 官方推荐最优写法
    原型判断:数据 instanceof Array
    构造器校验:数据.constructor === Array
    五、函数核心知识点
    49 函数定义与分类区别
    函数是封装独立逻辑、支持重复调用的代码模块
    命名函数:定义时设置函数名,可直接通过名称调用
    匿名函数:无自定义函数名,赋值变量后才可调用
    自执行函数:定义完成自动触发执行,无需手动调用
    闭包函数:函数嵌套结构,内层可访问外层变量,外层无法访问内层私有变量
    50 三种函数调用形式
    直接函数名调用
    以对象方法形式调用
    call 方法改变 this 指向后调用
    51 函数声明与表达式区别
    函数声明存在变量提升,可在定义语句前方调用
    函数表达式无提升特性,仅能在定义完成后执行调用
    六、定时器机制
    52 两类定时器用法、区别与清除
    setTimeout 延时单次定时器
    指定时长后仅执行一次代码,清除方法:clearTimeout (定时器标识)
    setInterval 循环重复定时器
    每隔固定周期重复执行代码,清除方法:clearInterval (定时器标识)
http://www.jsqmd.com/news/881473/

相关文章:

  • 抖音a_bogus生成原理与Python逆向实现全解析
  • 2026年口碑好的温州办公家具/智能办公家具/简约办公家具厂家哪家好 - 行业平台推荐
  • 机器学习对抗概念漂移:恶意浏览器扩展检测的实战与反思
  • LoRa设备射频指纹识别:基于ResNet-34与三重水印的鲁棒认证系统
  • 2026年靠谱的电磁悬挂除铁器/潍坊工业除铁器/潍坊除铁器/永磁自卸除铁器推荐厂家精选 - 品牌宣传支持者
  • esp开发与应用(继电器的使用)
  • YOLO26涨点改进| TIP 2025 |独家创新首发、特征融合改进篇|引入DFAM双特征聚合模块,通过局部纹理先验强化边缘、轮廓信息,助力小目标检测、RGB-D目标检测、多模态融合目标检测有效涨点
  • Kali Linux安装全解析:UEFI/GPT适配、GRUB故障定位与三种部署场景
  • 量子纠错技术:从理论到实践的突破
  • SSH、SNMP、NETCONF、SFTP
  • 刚出炉的 Codeforces Round 1100 B 题:一眼像交换,实则一行贪心公式
  • crypto-js Malformed UTF-8 data 报错根源与字节级修复方案
  • 数据结构——AVL二叉平衡树
  • 对抗性多臂老虎机与EXP4算法:原理、实现与实战调优
  • 中兴光猫工厂模式终极解锁:3分钟掌握免费高效管理工具
  • 用 AI 生成接口文档和测试用例:比“问一句答一句”更适合程序员的会员用法
  • 渗透测试信息收集四层穿透模型与实战流水线
  • Kubernetes准入控制器:在资源创建前进行安全检查
  • 阿里云ECS CPU 100%排查:5分钟定位挖矿病毒的原生命令链
  • easysearch 安装
  • 告别apt-key时代:深入理解Ubuntu软件源密钥管理机制变迁与最佳实践
  • Android高版本HTTPS抓包终极方案:Magisk+MoveCert证书迁移
  • NsEmuTools:终极NS模拟器自动化管理完整指南
  • AArch64虚拟内存系统架构与硬件辅助转换表更新机制
  • 深入理解C语言 islower 函数详解:判断字符是否为小写字母
  • CCFast 驰骋低代码BPM-积木菜单设计思想
  • 低代码开发的招聘管理系统实际运行数据和效果究竟如何?
  • 图像数据质量自动化评估与清洗:从CleanVision到自适应阈值实战
  • Unity C# Partial类实战:解耦大型项目架构的核心技术
  • 基于CNN的欧几里得望远镜双活动星系核智能探测方法与实践