浏览器中的事件循环(Event Loop)机制
什么是事件循环(Event loop),浅谈浏览器事件循环,一文带你了解什么是浏览器中的事件循环机制;通过代码帮你梳理事件循环是如何进行循环的。
JavaScript中的原型链到底是什么
原型链是什么,浅谈原型链,一文带你了解什么是原型链
JavaScript中的防抖和节流
什么是防抖 函数防抖(debounce):当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时。如下图,持续触发 scroll 事件时,并不执行 handle 函数,当 1000 毫秒内没有触发 scroll 事件时,才会延时触发 scroll 事件。 防抖应用场景如下 搜索框输入查询,如果用户一直在输入中,没有必要不停地调用去请求服务端接口,等用户停止输入的时候,再调用,设置一个合适的时间间隔,有效减轻服务端压力。 表单验证 按钮提交事件。 浏览器窗口缩放,resize 事件(如窗口停止改变大小之后重新计算布局)等。 具体实现(Lodash 库) 123456789101112131415161718192021222324252627/** * * @param { Function } func 要进行debouce的函数 * @param { Number } wait 等待时间,默认500ms * @param { Boolean } ...
JavaScript的大山:闭包和作用域链
执行上下文 所谓的程序其实可以理解为对变量的读写操作,因此便会产生一个问题:变量从哪来?执行上下文可分为两种:全局执行上下文和函数执行上下文。 从广义上来说,执行上下文由Lexical Environment和This binding构成。 Lexical Environment翻译成中文即词汇环境,而This Binding则指的是当前执行上下文中的this指向 全局执行上下文 这是一个最基础的上下文环境,其组成部分包含:全局对象(在浏览器中即Window对象)、全局Scope和outer。 在该作用域中,outer为null。因为他是为后边函数执行上下文所服务的。 浏览器中,全局执行上下文中的this指向Window对象。 构建执行上下文 执行上下文的创建是在,代码执行之前完成创建的。例如: 处理声明 检查重复定义 scope中如果存在重复声明,则抛出错误。但全局对象中可以重复。 创建绑定 对变量进行初始赋值。 var声明会将变量初始值赋值为undefined 函数声明会创建函数对象,然后将变量指向该对象 函数对象是一个很特殊的对象: 有一个特殊的p ...