防抖(debounce)和节流(throttle)
防抖和节流的目的都是希望一段时间内不要密集调用callback。
应用场景:滚动(防抖),搜索(节流)
防抖和节流的目的都是希望一段时间内不要密集调用callback。
应用场景:滚动(防抖),搜索(节流)
js 有自动垃圾回收机制(GC),GC 会周期性的清理不使用的变量所占用的内存空间。 不同浏览器的 GC 机制都不同,不同环境的 GC 机制也不同。
js无法直接比较一个对象是否为空( obj === {}
永远为 false
),原因是js在对比两者时是比对的两者的内存地址,而 {}
放在js引擎新分配的内存地址中,故而两者永远不相等。
遇到了laydate无法正确渲染的问题。
js对象有两种属性:
如果对象内只声明了get,则get/set属性值只可读。
如果对象内只声明了set,则get/set属性值只可写且值永远为 undefined
。
js判断两个对象是否相同(两个对象拥有相同的key和value就视为相同)。
此方法可以兼容key顺序不一致的情况。
JavaScript是单线程语言,JavaScript中的任务分为同步任务(sync task)和异步任务(async task)。遇到执行函数会将其放入调用栈(先进后出)中,遇到setTimeout/setInterval等异步任务时,会把它放入到消息队列中,等主线程的任务执行完成以后,再回过头执行消息队列中的异步任务,如果异步任务中仍然有异步任务,会继续放入消息队列,以此类推,便形成了一个事件循环。
同步任务:在主线程上排队。
异步任务:在任务队列中排队,等待通知进入主线程执行。
var
和 function
的声明毫无疑问是会被提升到其所在的全局作用域顶部或者函数作用域顶部的。
故而,对于 var
和 function
可以先使用后声明。
但是对于 let
和 const
,各种文章教程都说不会被js提升。
但是我从暂时性死区(TDZ)中发现其实他们俩也是存在变量提升的,只是他们被提升的时候不会在js内部被初始化。
import
和 export
都要使用 {}
来包裹变量。