以下是50个JS高级知识点的总结:
变量声明与定义
- undeclared与undefined:undeclared表示变量未被声明,undefined表示变量已被声明但未被赋值。
变量声明关键字
- let、const与var:分别用于声明局部变量、常量和全局变量。
暂时性死区
- 在变量声明之前访问该变量会得到ReferenceError,而不是undefined。
DOM操作
- 获取DOM元素:getElementById、querySelector、querySelectorAll等。
- 操作DOM元素:innerHTML、appendChild、removeChild等。
- DOM类型:包括Element、Node、NodeList等共12种。
作用域与作用域链
- 作用域:分为全局作用域和函数作用域。
- 作用域链:使得变量在不同作用域下可以隔离。
数组与字符串方法
- splice与slice:分别用于修改和提取数组元素。
- substr和substring:用于提取字符串子串,但substring更安全。
- includes与indexOf:includes方法更优秀于indexOf,因为它可以检测NaN。
异步编程
- Promise:用于解决异步编程中的回调地狱问题。
- async/await:进一步简化了Promise的使用,使其更接近同步代码。
正则表达式
- 常用正则表达式可以提高代码效率,帮助高效地处理文本数据。
页面加载优化
- 延迟加载:使用defer或async属性的脚本标签,优化页面加载性能。
对象创建
文档碎片
- 用于高效地创建和管理DOM元素,节省内存和提高性能。
错误处理
- async/await与try/catch:优雅地处理异步代码中的错误。
事件循环
- 宏任务与微任务:执行顺序由事件循环控制,主要依赖于Promise和setTimeout等。
对象属性描述符
- Object.defineProperty:允许自定义目标对象的属性描述符,提供更细粒度的控制。
函数优化策略
- 防抖与节流:优化函数执行频率的策略,适用于处理频繁触发的事件。
高阶函数
- 将函数作为参数或返回值的函数,如map、reduce、filter等。
函数柯里化
compose函数
箭头函数
- 与普通函数在语法糖上有所不同,主要体现在this指向、参数列表和表达式等方面。
Symbol
- 提供一种独特的属性名,用于避免属性冲突并替代常量。
模块规范
- AMD与CMD:解决了模块加载问题。
- CommonJS与ES6 Module:在服务器端和浏览器端各有优势。
ES6ES12语法
- 提供了丰富的特性,如let和const、箭头函数、Promise等。
特殊值比较
函数length属性
MUL函数
遍历策略
设计模式
- 如工厂模式、单例模式等,是解决常见编程问题的通用解决方案。
循环控制
- forEach:不能直接使用break或return跳出循环,可采用try/catch或递归实现。
页面重定向
- 通过window.location.href或window.history.pushState等方法实现。
原生方法实现
- 实现常用的JS原生方法如Math、Array、DOM等,提升代码可读性和复用性。
事件处理
- 鼠标事件:click、dblclick、mousedown等。
- 键盘事件:onkeydown、onkeyup、onkeypress。
元素信息获取
- 通过DOM API获取元素的坐标、尺寸、视图尺寸等信息,如getBoundingClientRect、IntersectionObserver等。
视图尺寸获取
- 通过window.innerWidth、window.innerHeight等属性获取Window、Document视图的尺寸。
高级DOM方法
- 如getBoundingClientRect、IntersectionObserver等,提供更高效、更优雅的DOM操作。
DOM树遍历
- createNodeIterator:用于遍历DOM树,实现对页面中所有元素的遍历。
CSS样式获取
- getComputedStyle:用于获取元素的CSS样式,访问元素的CSS属性值。
动画与性能优化
- requestAnimationFrame:用于执行帧间动画,提高用户体验。
- requestIdleCallback:允许在浏览器空闲时执行任务,优化性能。
页面加载事件
- DOMContentLoaded:在HTML文档加载和解析完成后触发,用于处理页面加载后的逻辑。
DOM结构检测
- MutationObserver:用于检测DOM结构的更改,并在检测到更改时触发回调。
Promise处理
- Promise.any:用于并行处理多个Promise,返回第一个成功的Promise或所有失败的Promise。
这些知识点涵盖了JS的高级特性、异步编程、DOM操作、性能优化等多个方面,掌握它们将大大提高你的JS编程能力。