
宏任务与微任务
JS执行机制同步任务同步任务都在主线程上执行,形成一个执行栈。 异步任务JS 的异步是通过回调函数实现的。 一般而言,异步任务有以下三种类型: 1、普通事件,如 click、resize 等 2、资源加载,如 load、error 等 3、定时器,包括 setInterval、setTimeout 等 异步任务相关添加到任务队列中(任务队列也称为消息队列)。 事件循环 先执行执行栈中的同...

JS执行机制同步任务同步任务都在主线程上执行,形成一个执行栈。 异步任务JS 的异步是通过回调函数实现的。 一般而言,异步任务有以下三种类型: 1、普通事件,如 click、resize 等 2、资源加载,如 load、error 等 3、定时器,包括 setInterval、setTimeout 等 异步任务相关添加到任务队列中(任务队列也称为消息队列)。 事件循环 先执行执行栈中的同...

防抖(debounce)所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。 使用场景 搜索框搜索输入,需要等到用户最后一次输入完再发送请求 手机号、邮箱验证输入检测 实现底层简单的实现: 需求:当鼠标在box里滑动时,box里的数字就加一。但如果鼠标每移动1px就加1,数字变化会非常频繁,非常浪费性能。 123456const...

this 是 JavaScript 最容易迷糊的知识点,不同的应用场合 this 的取值可能会有意想不到的结果,在此我们对以往学习过的关于【 this 默认的取值】情况进行归纳和总结。 普通函数普通函数的调用方式决定了 this 的值,即【谁调用 this 的值指向谁】,如下代码所示: 12345678910111213141516171819202122232425262728<sc...

throw异常处理是指预估代码执行过程中可能发生的错误,然后最大程度的避免错误的发生导致整个程序无法继续运行 总结: throw 抛出异常信息,程序也会终止执行 throw 后面跟的是错误提示信息 Error 对象配合 throw 使用,能够设置更详细的错误信息 1234567891011121314<script> function counter(x, y) {...

浅拷贝首先浅拷贝和深拷贝只针对引用类型 浅拷贝:拷贝的是地址 常见方法: 拷贝对象1.Object.assgin()object.assign 是 ES6 中 object 的一个方法,该方法可以用于 JS 对象的合并。我们可以使用它来实现浅拷贝。 该方法的参数 target 指的是目标对象,sources指的是源对象。使用形式如下: 1Object.assign(target, ...so...

原型对象构造函数通过原型分配的函数是所有对象所 共享的。 JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象 这个对象可以挂载函数,对象实例化不会多次创建原型上函数,节约内存 我们可以把那些不变的方法,直接定义在 prototype 对象上,这样所有对象的实例就可以共享这些方法。 构造函数和原型对象中的this 都指向 实例...

构造函数构造函数是专门用于创建对象的函数,如果一个函数使用 new 关键字调用,那么这个函数就是构造函数。 12345678<script> // 定义函数 function foo() { console.log('通过 new 也能调用函数...'); } // 调用函数 new foo;</script> ...

解构赋值是一种快速为变量赋值的简洁语法,本质上仍然是为变量赋值,分为数组解构、对象解构两大类型。 1. 数组解构数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法,如下代码所示: 12345678910111213<script> // 普通的数组 let arr = [1, 2, 3] // 批量声明变量 a b c // 同时将数组单元值 1 2 3 依次赋...

1. 函数提升函数提升与变量提升比较类似,是指函数在声明之前即可被调用。 1234567891011121314<script> // 调用函数 foo() // 声明函数 function foo() { console.log('声明之前即被调用...') } // 不存在提升现象 bar() // 错误 var...

作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问,作用域分为全局作用域和局部作用域。 1. 局部作用域局部作用域分为函数作用域和块作用域。 函数作用域在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。 123456789101112<script> // 声明 counter 函数 function counter(x, y) ...