js实现排序算法
冒泡排序 > 数组中有 n 个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过 n-1(数组的 length - 1) 轮,就完成了所有数的排序。 function bubbleSort(arr) { // 循环n-1轮 for (let i = 0; i < arr.l ...
Object.defineProperty()的使用
Object.defineProperty(),它的作用是可以通过该API直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。Vue框架内部大量使用了此API为对象定义属性,其响应式原理也是通过此API自定义setter与getter而完成的。 在平时的业务开发中,Object.defineProperty()基本上使用不到,因为在对象上定义一个新属性直接通 ...
JavaScript中的防抖函数与节流函数
JS中的防抖(debouncing)与节流(throttling)是用来控制一个函数在一定时间内执行的次数(频次),他俩个用处相近、但又不完全相同。 出现原因 为什么会出现这俩个技巧呢?换句话说,为什么要控制函数执行的频次?我们看下面这个例子,当我们在区域内进行滚动时,如果只是监听scroll事件就去执行函数的时候,函数在1s内被执行的次数要超过30次。 <ScrollEvent ...
事件循环(the Event Loop)、宏任务(macrotask)、微任务(microtask)
我们都知道JavaScript是单线程的语言,它不像大多数语言可以开启多线程,当处理一些阻塞并且很慢的操作时,它可以通过多线程使操作变成异步(例如读取文件等IO操作)。其实JavaScript也有同步异步的区分。首先来看一下同步与异步的区别 // 同步 alert('阻塞中...') console.log('待执行') // 异步 setTimeout(() ...
利用正则转换成自定义格式的时间字符串
每个网站都会有时间相关的展示,例如文章、新闻的发布时间,时间选择器的时间展示,显示当天时间等等。基本上后端数据库存储的都是Unix时间戳,前端需要将它转换成对应格式的字符串 格式类似于2018.09.08,18-09-08,09-08 16:37, 2018-09-08 16:37:00等等等。如果网站的时间展示格式是统一的,你完全可以定一个函 ...