区别 伪数组的类型不是Array,而是Object,而数组类型是Array。 伪数组可以使用的length属性查看长度,也可以使用[index]获取某个元素,但是不能使用数组的其他方法,也不能改变长度,遍历使用for in方法。 伪数组的常见场景: 函数的参数arguments 原生js获取DOM: Read More
CSS盒模型定义了盒的每个部分包含 margin, border, padding, content 。 根据盒子大小的计算方式不同盒模型分成了两种, 标准盒模型和怪异盒模型。 标准模型, 给盒设置 `width` 和 `height`,实际设置的是 content box。`padding` 和 Read More
组件的生命周期可分成三个状态: Mounting(挂载):已插入真实 DOM Updating(更新):正在被重新渲染 Unmounting(卸载):已移出真实 DOM 挂载 当组件实例被创建并插入 DOM 中时,其生命周期调用顺序如下: constructor(): 在 React 组件挂载之前, Read More
输入地址,浏览器查找域名的 IP 地址。 浏览器向 该 IP 地址的web 服务器发送一个 HTTP 请求, 在发送请求之前浏览器和服务器建立TCP的三次握手,判断是否是HTTP缓存, 如果是强制缓存且在有效期内,不再向服务器发请求, 如果是HTTP协商缓存向后端发送请求且和后端服务器对比,在有效期 Read More
能。 token一般是用来判断用户是否登录的, 它内部包含的信息有: uid(用户唯一的身份标识)、 time(当前时间的时间戳)、 sign(签名,token 的前几位以哈希算法压缩成的一定长度的十六进制字符串) `token`可以存放在`Cookie`中,`token` 是否过期,应该由后端来判 Read More
new关键字会进行如下的操作: 1. 创建一个空的简单JavaScript对象(即`{}`); 2. 为步骤1新创建的对象添加属性`__proto__`,将该属性链接至构造函数的原型对象 ; 3. 将步骤1新创建的对象作为`this`的上下文 ; 4. 如果该函数没有返回对象,则返回`this`。 Read More
浏览器拿到HTML, 先将HTML转换成dom树, 再将CSS样式转换成stylesheet, 根据dom树和stylesheet创建布局树, 对布局树进行分层, 为每个图层生成绘制列表, 再将图层分成图块, 紧接着光栅化将图块转换成位图, 最后合成绘制生成页面。 分层的目的: 避免整个页面渲染,把 Read More
浏览器会立即加载JS文件并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行 加上async属性,加载JS文档和渲染文档可以同时进行(异步),当JS加载完成,JS代码立即执行,会阻塞HTML渲染。 加上defer,加载后续 Read More
XSS是跨站脚本攻击(Cross Site Scripting),不写为CSS是为了避免和层叠样式表(Cascading Style Sheets)的缩写混淆,所以将跨站脚本攻击写为XSS。 攻击者可以通过向Web页面里面插入script代码,当用户浏览这个页面时,就会运行被插入的script代码, Read More
CSRF跨站点请求伪造(Cross Site Request Forgery)和XSS攻击一样,有巨大的危害性,就是攻击者盗用了用户的身份,以用户的身份发送恶意请求,但是对服务器来说这个请求是合理的,这样就完成了攻击者的目标。 CSRF攻击的过程原理是: 用户打开浏览器,访问目标网站A,输入用户名和 Read More
浏览器垃圾回收机制根据数据的存储方式分为栈垃圾回收和堆垃圾回收。 栈垃圾回收的方式非常简便,当一个函数执行结束之后,JavaScript 引擎会通过向下移动 ESP 来销毁该函数保存在栈中的执行上下文,遵循先进后出的原则。 堆垃圾回收,当函数直接结束,栈空间处理完成了,但是堆空间的数据虽然没有被引用 Read More
px:pixel像素的缩写,绝对长度单位,它的大小取决于屏幕的分辨率,是开发网页中常常使用的单位。 em:相对长度单位,在 `font-size` 中使用是相对于父元素的字体大小,在其他属性中使用是相对于自身的字体大小,如 width。如当前元素的字体尺寸未设置,由于字体大小可继承的原因,可逐级向上 Read More
箭头函数相当于匿名函数,简化了函数定义。 箭头函数有两种写法,当函数体是单条语句的时候可以省略{}和return。 另一种是包含多条语句,不可以省略{}和return。 特点 箭头函数最大的特点就是没有this,所以this是从外部获取,就是继承外部的执行上下文中的this,由于没有this关键字所 Read More
undefind 是全局对象的一个属性,当一个变量没有被赋值或者一个函数没有返回值或者某个对象不存在某个属性却去访问或者函数定义了形参但没有传递实参,这时候都是undefined。 undefined通过typeof判断类型是'undefined'。undefined == undefined un Read More
所有异步任务都是在同步任务执行结束之后,从任务队列中依次取出执行。 回调函数是异步操作最基本的方法,比如AJAX回调,回调函数的优点是简单、容易理解和实现,缺点是不利于代码的阅读和维护,各个部分之间高度耦合,使得程序结构混乱、流程难以追踪(尤其是多个回调函数嵌套的情况),而且每个任务只能指定一个回调 Read More
CSS样式的优先级应该分成四大类 第一类`!important`,无论引入方式是什么,选择器是什么,它的优先级都是最高的。 第二类引入方式,行内样式的优先级要高于嵌入和外链,嵌入和外链如果使用的选择器相同就看他们在页面中插入的顺序,在后面插入的会覆盖前面的。 第三类选择器,选择器优先级:id选择器> Read More
JavaScript有4种方法判断变量的类型,分别是typeof、instanceof、Object.prototype.toString.call()(对象原型链判断方法)、 constructor (用于引用数据类型) typeof:常用于判断基本数据类型,对于引用数据类型除了function返 Read More
Promise的作用: Promise是异步微任务,解决了异步多层嵌套回调的问题,让代码的可读性更高,更容易维护。 Promise如何使用: Promise是ES6提供的一个构造函数,可以使用Promise构造函数new一个实例,Promise构造函数接收一个函数作为参数,这个函数有两个参数,分别是 Read More
闭包 一个函数和词法环境的引用捆绑在一起,这样的组合就是闭包(closure)。 一般就是一个函数A,return其内部的函数B,被return出去的B函数能够在外部访问A函数内部的变量,这时候就形成了一个B函数的变量背包,A函数执行结束后这个变量背包也不会被销毁,并且这个变量背包在A函数外部只能通 Read More
JS数据类型分为两类: 一类是基本数据类型,也叫简单数据类型,包含7种类型,分别是Number 、String、Boolean、BigInt、Symbol、Null、Undefined。 另一类是引用数据类型也叫复杂数据类型,通常用Object代表,普通对象,数组,正则,日期,Math数学函数都属于 Read More