网页渲染过程

解析 HTML:浏览器会解析 HTML 文件,构建 DOM(文档对象模型)树,表示网页的结构。解析 CSS:浏览器会解析 CSS 文件,构建 CSSOM(CSS 对象模型)树,表示网页的样式信息。构建 Render 树:浏览器将 DOM 树和 CSSOM 树合并,构建 Render 树(也称为渲染树),用于确定网页元素的布局和渲染顺序。布局(Layout):在渲染树的基础上,计算出每个元素在页面中

- 阅读全文 -

跨域原因及解决方法

跨域指的是在浏览器中,当一个网页的脚本试图去访问不同源(域名、协议或端口)的资源时,浏览器会阻止该请求,这是出于安全策略的考虑。跨域的原因跨域问题是由浏览器的同源策略(Same Origin Policy)所导致的,它限制了从同一个源加载的网页脚本如何与来自其他源的资源进行交互。同源策略要求:协议相同域名相同端口相同如果其中有任何一个不同,浏览器就会认为跨域,并限制跨域请求。解决跨域问题的方法JS

- 阅读全文 -

let,const区别

let 和 const 是在ES6(ECMAScript 2015)中引入的变量声明关键字,用于声明变量。它们与旧的关键字var有一些区别。let 关键字let 允许声明一个块级作用域的变量。let 声明的变量的作用域限制在当前的代码块内(封闭的花括号{})。let 声明的变量可以根据需要在相同的作用域内重新赋值。let 声明的变量可以在声明之前使用(变量提升的幅度较小)。不能重复声明相同的变量名

- 阅读全文 -

async和await区别

async 和 await 是 JavaScript 中用于处理异步操作的关键字。它们通常一起使用在 Promise 的基础上来简化异步代码的编写和阅读。async 关键字用于标记一个函数为异步函数,表示函数内部可能包含异步操作。异步函数会隐式地返回一个Promise对象,该Promise对象的状态和值由异步操作决定。await 关键字只能在异步函数内部使用。它用于暂停当前异步函数的执行,并等待一

- 阅读全文 -

commonjs和es模块化区别

CommonJSES模块系统设计用于服务器端JavaScript环境设计用于服务器端和浏览器端异步模块加载同步模块加载模块同步加载模块异步加载每个模块只有一个默认导出多个命名导出和默认导出使用require导入模块使用import和export导入/导出CommonJS模块在运行时动态加载ES模块在编译时静态解析适用于服务器端应用适用于服务器端和客户端应用在Node.js中使用在支持ES6的现代浏

- 阅读全文 -

es6模块化原理

ES6 模块化是一种用于组织和管理 JavaScript 代码的模块系统。它提供了一种在不同的文件之间导入和导出功能的方式,使得代码更易于组织、复用和维护。ES6 模块化是由 ECMAScript 2015(ES6)标准引入的,并已经得到主流浏览器和 Node.js 的广泛支持。下面是 ES6 模块化的一些原理和特点:文件级别的模块:每个 ES6 模块都位于一个单独的文件,文件本身就是一个模块。导

- 阅读全文 -

react生命周期

在较早版本的 React 中,存在一组称为 “生命周期方法” 的特殊函数,用于在组件的不同阶段执行特定操作。然而,从 React 16.3 开始,React 引入了新的生命周期方法,并逐渐弃用了一些以前的方法。以下是一个包含常用 React 组件生命周期的概述(基于 React 16.11 版本):Mounting(挂载阶段):constructor(): 组件被创建并初始化时调用,用于初始化组件

- 阅读全文 -

sort函数怎么从大到小排序

要使用 JavaScript 的 sort() 函数进行从大到小的排序,可以按以下步骤操作:使用 sort() 函数对数组进行排序。该函数采用一个比较函数作为参数来确定元素的顺序。在比较函数中,将第一个参数(a)与第二个参数(b)进行比较。如果希望 a 在 b 之前(即从大到小排序),则返回一个大于 0 的值。如果希望 b 在 a 之前(即从小到大排序),则返回一个小于 0 的值。如果希望保持原始

- 阅读全文 -

new 构造函数的时候this的指向改变四次,分别指向什么?

在进行 new 构造函数时,this 的指向经历了以下四次变化:创建一个空对象:在使用 new 关键字调用构造函数时,会创建一个空对象,这个空对象被赋值给 this。继承原型链:新创建的空对象会被设置 [[Prototype]](即 __proto__)链接到构造函数的原型对象上。执行构造函数:构造函数会被执行,其中的 this 引用当前正在创建的对象。因此,构造函数中对 this 的属性和方法的

- 阅读全文 -

深拷贝和浅拷贝的方法有哪些?

深拷贝和浅拷贝是常用于复制对象或数组的概念。下面我将介绍几种常见的深拷贝和浅拷贝的方法:浅拷贝:扩展操作符(Spread Operator):使用扩展操作符 ... 可以对数组或对象进行浅拷贝。const originalArray = [1, 2, 3]; const shallowCopyArray = [...originalArray]; const originalObject = {

- 阅读全文 -