再叙 JavaScript 事件循环

一、为什么 JavaScript 是单线程我们都知道 JavaScript 是一门单线程语言,也就是说,同一个时间内只能做一件事。至于它为什么不能是多线程,这和它的用途有关。作为浏览器脚本语言,JavaScript 的主要用途是与用户互动,操作 DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定 JavaScript 同时有两个线程,一个线程在某个 DOM 节点上添加内容...

发布于   更新于 JS

js 中的 call、apply、bind 笔记

apply callFunction.prototype.apply()、Function.prototype.call() call() 和 apply() 是 Function 的方法,它的第一个参数是 this,第二个参数是是给 调用函数 传递的参数。call 和 apply() 都是为了改变某个函数运行时的 context 即上下文而存在的。 换句话说,就是为了改变函数体内部 th...

发布于 JS

eventLoop、promise 笔记

什么是宏任务与微任务JS是单线程,但是一些高耗时的操作就带来了进程阻塞的问题,为了解决这个问题,JS有两种任务的执行模式:同步模式(Synchronous)和异步模式(Asynchronous)。 在异步模式下,创建异步任务主要分为 宏任务(Macrotask) 和 微任务(Microtask) 两种。ES6规范中,宏任务被称为Task,微任务被称为Jobs。宏任务是由宿主(浏览器、Node...

发布于 JS

js 随笔记录

获取当前日期的前后日期1234567891011121314/** * getAfterDateStr 获取当前日期 的 前后日期 * @param {number} i 正数为之后的日期 负数为之前的日期 0(不传)为当前日期 */export function getAfterDateStr(i = 0) { let date = new Date(); c...

发布于 JS