前端知识点整理之页面加载事件,数组操作,DOM节点操作,循环和分支

React数组渲染核心原理:key、map与虚拟DOM diff机制 在前端开发中,列表渲染是基础却极易出错的关键环节。理解React如何通过虚拟DOM进行高效比对(diff算法),是掌握高性能UI构建的前提;而key作为reconciliation过程中的稳定锚点,其唯一性与稳定性直接决定组件复用是否正确;.map()则因返回新数组、符合不可变数据流契约,成为React渲染协议的强制接口。这些机制共同支撑起动态列表的响应式更新、状态保持与性能保障。本文深入解析key为何不能简单用索引、.map()为何不可被for替代、以及虚拟DOM如何基于key实现最小化DOM操作,覆盖从 阅读详情

页面加载事件的比较

  • window.onload
  • jquery 中的 document.ready
document.ready = function (callback) {
    // 兼容FF,Google
    if (document.addEventListener) {
        document.addEventListener('DOMContentLoaded', function () {
            document.removeEventListener('DOMContentLoaded', arguments.callee, false);
            callback();
        }, false)
    }
    // 兼容IE
    else if (document.attachEvent) {
        document.attachEvent('onreadystatechange', function () {
              if (document.readyState == "complete") {
                        document.detachEvent("onreadystatechange", arguments.callee);
                        callback();
                }
        })
    }
    else if (document.lastChild == document.body) {
        callback();
    }
}

window.onload = function () {
    alert('onload'); // 后执行
};

document.ready(function () {
    alert('ready'); // 先执行
});
  • 内部实现细节如上

数组的常用操作方法

  • push 从后面追加一个或多个,返回新数组的长度
  • unshift 从前面追加一个或多个,返回新数组的长度
  • pop 删除最后一个元素,返回被删除的元素
  • shift 删除第一个元素,返回第一个被删除的元素
  • concat 连接数组,返回新的数组
  • join 将数组转字符串,参数是分隔符,默认是分隔符是逗号”,”
  • split 将字符串转换为数组,默认分割符是逗号 stringObject.split(separator,howmany), howmany 参数可指定返回的数组的最大长度

js 的构成

  • ECMAScript 描述了js语法和基本对象
  • DOM (文档对象模型) 提供了文档结构化表示,并定义了如何通过脚本来访问文档结构
  • BOM (浏览器对象模型) 提供与浏览器交互的方法和接口

dom 节点

  • 标签节点
  • 文字节点
  • 属性节点
  • 注释节点

获取节点的方式

  • document.getElementById(“id”)
  • document.getElementByTagName(“div”)
  • document.getElementsByClassName(“classname”) ie 678 不支持
  • document.querySelector(); // 返回第一个匹配的dom元素
  • document.querySelectorAll(); // 返回所有dom元素匹配的集合

获取浏览器是否支持的写法如下

if(document.querySelector){
  // do your business
}

节点的访问

  • 父节点(唯一): dom.parentNode
  • 兄弟节点 (兼容写法):
// nextSibling 和 previousSibling 是IE的写法
var next = (dom.nextElementSibling) || (dom.nextSibling);
var pre = (dom.previousElementSibling) || (dom.previousSibling);
  • 孩子节点 (兼容写法):
// firstChild, lastChild 是IE的写法
var first = father.firstElementChild || father.firstChild;
var last = father.lastElementChild || father.lastChild;
  • 孩子们节点:childNodes 和 children
// childNodes 是w3c推荐使用, 但谷歌等浏览器把换行也看成一个节点
// 用下面的方式实现,比较麻烦
var demo = document.getElementById("demo");
var nodes = demo.childNodes;
for(var i=0;i<nodes.length;i++) {
  if(nodes[i].nodeType == 1) {
    nodes[i].style.display = "none";
  }
}

// children 在ie678里面包含注释节点, 注意在编码时避开使用注释
var demo = document.getElementById("demo");
var child = demo.children;
child[0].style.backgroundColor = "red";   // 第一个孩子
child[child.length-1].style.backgroundColor = "red";   // 最后一个孩子

dom 节点操作

  • 创建节点:var dom = document.createElement(“div”);
  • 添加节点:
// appendChild 将dom追加到dom1的最后面
dom1.appendChild(dom) ;

// insertBefore 将newDom 插入到 ReferencedDom 的前面, 返回值为新插入的值, dom1 为父节点
dom1.insertBefore(newDom, ReferencedDom)
  • 删除节点: removeChild() eg: domA.removeChild(domB); // 删除domA里面的孩子节点domB

  • 克隆节点: cloneNode 复制节点,接受一个布尔值,true表示深复制(复制节点及其内部所有节点), false 表示浅复制

// 深复制
demo.cloneNode(true);
// 浅复制
demo.cloneNode(false);

属性设定

非兼容ie6,7的写法
- 获取:dom.getAttribute(“属性”);
- 设置:dom.setAttribute(“属性”,”值”);
- 删除:dom.removeAttribute(“属性”);

兼容写法举例:
- 获取:var cn = dom.className
- 设置:dom.className = “dcl”
- 删除:dom.className = null;

特殊样式属性

  • cssText 用于更改多个样式属性设置
dom.style.cssText = "width:30px;height:10px;"

常用的循环

  • for
  • while
  • do while

switch 多分支语句

var str = "abc";
switch(str) {
  case "a"
    // ...
    break;
  case "b"
    // ...
    break;
  case "c"
    // ...
    break;
  case "abc"
    // ...
    break;
  default:
    // ...
}
2026前端面试风向:告别八股背诵,用工程思维答题 前端面试正从八股文背诵转向工程实践考核。理解事件循环、浏览器缓存、Vue3响应式设计等基础原理只是起点,关键在于掌握其背后的设计动机与权衡取舍。围绕闭包、虚拟DOM、微前端、性能优化等核心概念,解析技术选型与项目落地路径。同时,AI辅助开发、Web Worker大文件上传、SSE实时通信等新场景成为考察热点。本文结合最新面经与行业高频问题,拆解2026年前端面试的进阶答法,帮你构建“问题—原理—权衡—落地”的答题框架,从“背题者”变为真正的“使用者”,在面试中展现扎实的工程能力。 阅读详情

相关推荐

Java后端以及部分前端思维导图

今天分享一下我在Java前后端的学习内容,将我学过的知识汇聚成了思维导图,仅供参考,仅仅只是我个人所掌握的,一定是还有很多的技术,可能是我没有学到,也可能是我忘记写入,总之这份导图只代表我个人所学,请大佬见谅,有哪里不足或者有更好的建议,欢迎各位留言吐槽,有哪里不懂的可以私信我,我会一一作答,话不多说,上图. Java 前端 HTML5 语义化标签 header nav article section aside

Trouvailless的博客 1302

js第7章DOM 课后习题——利用HTML DOM实现全选、全不选、反选功能

填空题 DOM中__document.createElement()____方法可用于创建一个元素节点。 HTML DOM中的根节点是_<html>标签_____。 判断题 document.querySelector('div').classList可以获取文档中所有div的class值。( ×) 删除节点的removeChild()方法返回的是一个布尔类型值。(×) HTML文档每个换行都是一个文本节点。( √) document对象的getElementsByClassN...

WHT869706733的博客 8448

HTML前端游戏项目练手合集:从原生JS到Canvas的进阶之路

前端开发的核心能力,往往隐藏在复杂的交互逻辑与状态管理之中。JavaScript作为浏览器端的基础语言,其事件驱动、异步处理和DOM操作能力,是构建动态Web应用的关键。通过HTML5小游戏开发练习,开发者能深入理解游戏循环、碰撞检测、二维数组等经典算法模型,这些原理同样适用于业务系统的高频交互场景。从简单的猜数字到复杂的2048或俄罗斯方块,每个项目都是一次从需求分析到代码落地的完整工程实践。本文整理了两百多个可运行、代码可读、学习密度高的原生前端游戏项目,按玩法与技术难度双重分类,并拆解了核心实现逻辑与

weixin_31896061的博客 189

WebAPIs-03-removeChild()方法删除节点、动态生成表格案例、传统方式和监听方式给元素注册事件、获取事件对象、随鼠标的天使案例获取鼠标的位置、阻止事件冒泡、取消默认行为

学习目标: 能够使用removeChild()方法删除节点 能够完成动态生成表格案例 能够使用传统方式和监听方式给元素注册事件 能够说出事件流执行的三个阶段 能够在事件处理函数中获取事件对象 能够使用事件对象取消默认行为 能够使用事件对象阻止事件冒泡 能够使用事件对象获取鼠标的位置 能够完成跟随鼠标的天使案例 1.1. 节点操作 1.1.1 删除节点 node.removeChild() 方法从 node节点中删除一个子节点,返回删除的节点。 <button>删除</butt.

weixin_51353891的博客 507

告别前端开发生涯【TX前端面经整理(二面挂)】

告别前端开发生涯【TX前端面经整理(二面挂)】

sketchlcy的博客 265

等保: Postgresql配置ssl链接

等保: postgresql配置ssl链接完整方案和避坑指南

weixin_43557605的博客 4383

删除节点(removeChild())

remoceChild():方法将从一个给定元素里删除一个子节点: reference = element.removeChild(node); 这个方法的返回值是一个指向已经被删除的子节点的引用指针。 当某个节点被removeChild()方法删除时,这个节点包含的所有子节点将同时被删除。 在下例中,id属性值是content的元素还包含这一个id属性值是fineprint的元素...

weixin_30696427的博客 1241

DBC到ARXML:AUTOSAR CAN通信栈自动化配置完整指南

在AUTOSAR架构下,DBC(CAN数据库文件)与ARXML(AUTOSAR XML)分别扮演着描述总线通信和ECU内部配置的关键角色。DBC定义了网络上的报文与信号,而ARXML则是AUTOSAR工具链交换配置数据的标准格式。在实际的ECU开发中,如何将DBC中的通信信息高效、准确地转换为ARXML,并自动生成可编译的CAN通信栈BSW配置,是许多工程师面临的痛点。借助DaVinci Configurator等工具,我们可以通过自动化导入链路消除手工映射带来的字节序错误、信号起始位偏差等高风险问题,大幅

weixin_34183910的博客 543

DOM的加载过程

构建dom树:html解析器

Compromise_的博客 1390

避坑指南:用Adams做滚珠丝杠仿真时90%人会遇到的3个建模错误

本文针对使用Adams进行滚珠丝杠动力学仿真时常见的三大建模错误,提供了详细的避坑指南。重点解析了如何避免因直接导入CAD几何体导致的性能与精度问题,科学设置接触参数以提升计算效率与结果平滑度,以及通过规范的命名与组织管理模型,确保仿真过程高效可靠。

gin88的博客 574

monocle3-单细胞轨迹分析在疾病研究中的应用

本文深入探讨了monocle3在单细胞轨迹分析中的核心应用,特别是在疾病研究领域。通过实战案例,详细讲解了如何利用monocle3进行轨迹推断,构建细胞状态演变的“路线图”,并结合伪时间分析定位疾病进展阶段。文章还介绍了如何挖掘驱动疾病发展的关键基因,并分享了数据整合、根节点选择等进阶技巧与避坑指南,旨在帮助研究者利用这一强大工具揭示肿瘤异质性、免疫治疗耐药等复杂生物学过程的动态机制。

a3b4c5的博客 640

删除节点removeChild()

 removeChild() 方法从子节点列表中删除某个节点。如删除成功,此方法可返回被删除的节点,如失败,则返回 NULL。 语法: nodeObject.removeChild(node) 参数: node :必需,指定需要删除的节点。 我们来看看下面代码,删除子点。 运行结果: HTML 删除节点的内容: javascript 注意: 把删除的子节点赋值给 x,这个子...

乌龟不背壳 2万+

Open Dynamics Engine(ODE)物理引擎教程(1)--下载与安装准备

引言 ODE是一个免费的工业级库,用于模拟关节式刚体动力学,例如地面车辆、腿部生物和虚拟现实环境中的移动对象。它具有快速、灵活、健壮和独立于平台的特点,具有先进的关节、摩擦接触和内置的碰撞检测功能。 项目主页:http://www.ode.org/ 线上手册:http://ode.org/wiki/index.php?title=Manual 本教程为博主亲自亲测过程的总结,转载请注明出处! ...

腿足机器人领域 2216

js alert文字不能复制_小猿圈web前端解读JS前端知识点整理总结

学习web前端你的小伙伴都是知道的js是一个门槛,如果学不会js对于日后的开发也是有一定的影响的,但是怎么学习好js,小猿圈web前端讲师讲解JS前端知识点整理总结,希望对于学习web前端的你有所帮助。页面加载事件的比较window.onloadjquery中的document.readydocument.ready = function (callback) { // 兼容FF,Google ...

weixin_39676972的博客 326

【八股】JUC并发编程篇

👉抽象队列同步器,就是一种锁,内部维护的是一个先进先出的双向队列,队列中存储的是排队的线程,用state来标识是否有线程获得锁【0是无锁状态】👉流程:当一个线程拿到锁后会修改state = 1,这时如果有其他线程访问则会进入队列进行排序,直到state变成0后,队头线程才会拿到锁。在对state进行修改时,用的是CAS操作,所以可以保证原子性。👉它可以实现公平锁或非公平锁【默认】,上述是一个公平锁。如果新线程和队头线程抢锁资源就是非公平锁。

qq_44768318的博客 554

基于uniapp开发PDA扫码枪APP:实现RFID批量扫描读取功能

基于uniapp的PDA扫码枪APP开发实战,实现高效RFID读取功能,uniapp整合PDA硬件的实践分享,基于uniapp的PDA端RFID批量扫描方案开发

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

前端——DOM与BOM总结

DOM全称为 “Document Object Model”,文档对象模型,提供操作HTML文档的方法。(注:每个html文件在浏览器中都视为一篇文档,操作文档实际就是操作页面元素。当网页加载时,浏览器就会自动创建当前页面的文档对象模型(DOM)。在DOM中,文档的所有部分(例如元素、属性、文本等)都会被组织成一个树结构(类似于族谱),树中每一个分支的终点称为一个节点,每个节点都是一个对象。

qq_53256193的博客 2589

YOLOv8【第一章:基础入门篇·第2节】一文搞定,数据集制作与标注完全指南!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏,该专栏专注于分享我在YOLOv8目标检测模型中的实战经验,涵盖从入门基础到深度优化的全方位解决方案。无论你是计算机视觉的新手,还是具有多年深度学习经验的专家,本专栏都将为你提供高效、可复现的技术方案,助你掌握YOLOv8的核心技术,提升目标检测性能,突破瓶颈,优化模型,并加速项目开发🚀!

**My Coding Family** 1509

JavaScript期末复习,2024前端经典面试题整理合集

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里免费领取,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里免费领取。

2401_84097510的博客 863

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

DOM 访问关系的封装:打造前端常用的 tools.js 工具库

> 本篇为「千古前端图文教程」系列中 DOM 操作练习的一部分,讲解如何将 DOM 节点之间的“父子兄”访问关系封装成独立工具函数,沉淀为可复用的 `tools.js` 工具库。读完本文,你将掌握 7 个高频 DOM 访问函数(获取元素、首尾子节点、前后兄弟节点、指定索引兄弟、全部兄弟元素)的完整实现,理解 `firstElementChild || firstChild` 这类浏览器兼容写法的由

gitblog_00099的博客 781

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

前端面试题及答案汇总

闭包是能够读取其他函数内部变量的函数要理解闭包,首先必须理解Javascript特殊的变量作用域闭包的特性:1.封闭性:外界无法访问闭包内部的数据,如果在闭包内声明变量,外界是无法访问的,除非闭包主动向外界提供访问接口;2.持久性:一般的函数,调用完之后,系统会自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包依然存在。1.创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型。2.属性和方法被加到this引用的对象中。

盼盼盼的博客 6万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

2024年前端最全前端学习到就业,到底需要怎么学?(3),阿里前端p7面试

除了简历做到位,面试题也必不可少,整理了些题目,前面有117道汇总的面试到的题目,后面包括了HTML、CSS、JS、ES6、vue、微信小程序、项目类问题、笔试编程类题等专题。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】关系运算逻辑运算三元运算分支循环switchwhiledo-whileforbreak和continue数组数组方法二维数组字符串。

2401_84438160的博客 1535

web前端开发编码规范及性能优化,前端小程序开发

大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。

2401_83974370的博客 1035

这才是自学前端的正确姿势!(本人亲身经历,9个月拿到拼多多、美团、京东校招offer)

本人自2023年2月开始自学前端,本科是数学专业的,在此之前只接触过C语言,因此对于前端可谓是零基础,由于网上的学习路径鱼龙混杂,因此在中间自己也踩了一些坑。经过九个月的学习,最终在今年秋招斩获三个大厂的offer,给自己的前端学习之路画上一个不错的节点,希望能够将自己这段时间整理总结的笔记分享出来,帮助大家。主要内容包括html,css,html5,css3,JavaScript,正则表达式,函数,BOM,DOM,jQuery,AJAX,vue 等等。

2301_79773949的博客 967

前端面试口语化表达技巧与实例解析

在前端开发领域,技术概念的理解与表达是面试和日常协作中的关键能力。虚拟DOM、闭包、事件循环等核心机制,本质上都是为解决特定工程问题而设计的解决方案。以虚拟DOM为例,其原理是通过轻量级的JavaScript对象模拟真实DOM结构,配合Diff算法实现高效更新,这种设计显著降低了直接操作DOM的性能开销。类似地,闭包通过维持函数作用域链,解决了变量持久化和模块化开发的需求。掌握这些基础概念后,开发者需要将其转化为生活化比喻,如用装修图纸类比虚拟DOM、用咖啡厅运营模拟事件循环,这种表达能力既能验证理解深度,

weixin_30591551的博客 379
上一篇: 移动应用的版本号更新管理
下一篇: 前端知识点整理之内置对象,日期对象和定时器的相关操作
Wang's Blog
博客等级 码龄12年 7434粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Wang's Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值