let 和 const 块级作用域的出现 通过 var 声明的变量存在变量提升的特性: 初学者可能会觉得只有 condition 为 true 的时候,才会创建 value,如果 condition 为 false,结果应该是报错,然而因为变量提升的原因,代码相当于: 如果 condition 为 false,结果会是 undefined。 除此之外,在 for 循环中: 即便循环已经结束了,我们依然可以访问 i 的值。 为了加强对变量生命周期的控制,ECMAScript… »
防抖 前言 在前端开发中会遇到一些频繁的事件触发,比如: window 的 resize、scroll mousedown、mousemove keyup、keydown 为此,我们举个示例代码来了解事件如何频繁的触发: 我们写个 index.html 文件: debounce.js 文件的代码如下: 我们来看看效果: 从左边滑到右边就触发了 165 次 getUserAction 函数! 因为这个例子很简单,所以浏览器完全反应的过来,可是如果是复杂的回调函数或是 ajax 请求呢?假设… »
从原型到原型链 构造函数创建对象 我们先使用构造函数创建一个对象: 在这个例子中,Person 就是一个构造函数,我们使用 new 创建了一个实例对象 person。 很简单吧,接下来进入正题: prototype 每个函数都有一个 prototype 属性,就是我们经常在各种例子中看到的那个 prototype ,比如: 那这个函数的 prototype 属性到底指向的是什么呢?是这个函数的原型吗? 其实,函数的 prototype… »
JavaScript 原生 js 系列 JavaScript 深入系列、JavaScript 专题系列、ES6 系列 完全熟练掌握 eventLoop tasks-microtasks-queues-and-schedules Promise 你需要阅读 Promise A+规范,注意其中的细节,并且灵活的运用到开发当中去。 Promise A+ 英文文档 你需要跟着精品教程手写一遍 Promise… »