每种编程语言都有它的内存管理机制,比如C语言底层一般有内存管理接口malloc()
和free()
。JavaScript是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放,释放的过程称为垃圾回收。正因为这种自动“释放”内存的机制,让JavaScript开发者错误的认为他们可以不用关心内存管理,实际上包括我自己在实际的JS项目开发中也很少关注其内存管理问题。
每月归档:2019年07月
面试题之-扁平化数组
面试中经常会遇到一道扁平化数组的题目:写一个函数,将输入数组 [1, [2, [3, [4]], 5]]
转化为 [1, 2, 3, 4, 5]
的形式。
一开始,我以为是通过此题来考察递归的使用,后来仔细一想,事情远远不止这么简单,本文试着通过几种方式的实现,来理解此题可能要考察的内容。
继续阅读…Vue.nextTick()异步更新方法解析
Vue 在更新 DOM 时是异步执行的
。只要侦听到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发,只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作是非常重要的。然后,在下一个的事件循环“tick”中,Vue 刷新队列并执行实际 (已去重的) 工作。Vue 在内部对异步队列尝试使用原生的 Promise.then
、MutationObserver
和 setImmediate
,如果执行环境不支持,则会采用 setTimeout(fn, 0)
代替。
MutationObserver HTML5 API
MutationObserver
接口用来监视DOM树的更改,DOM树的任何变动,比如节点的增减、属性的变动、文本内容的变动,这个API都能得到通知。
Promise使用与实现学习笔记
Promise
是一个对象,它代表了一个异步操作的最终完成或者失败。因为大多数人仅仅是使用已创建的Promise
实例对象,所以本教程将首先说明怎样使用Promise
,再说明如何创建Promise
。
Promise/A+规范
An open standard for sound, interoperable JavaScript promises—by implementers, for implementers.
Promise表示异步操作的最终结果。与之进行交互的主要方式是通过then
方法,该方法通过注册回调以接收promise的最终值或promise未完成的原因。
JS中String三个方法substring,substr,slice使用学习笔记
箭头函数学习笔记
箭头函数
表达式的语法比函数表达式更简洁,并且没有自己的this
,arguments
,super
或new.target
。箭头函数更适用于那些本来需要匿名函数的地方,并且它们不能用作构造函数。