在node中,事件循环表现出的状态与浏览器中大致相同。不同的是node中有一套自己的模型。node中事件循环的实现是依靠的libuv引擎。我们知道node选择chrome v...
在node中,事件循环表现出的状态与浏览器中大致相同。不同的是node中有一套自己的模型。node中事件循环的实现是依靠的libuv引擎。我们知道node选择chrome v...
最近被一个很小的问题困了两天,事后想想不觉好笑,所以分享出来。 在用组件库的能力做表单校验的时候,我发现在触发一次校验后,后面表单就会自动校验,这本来也正常,但我尝试在校验后...
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1...
如果给前端开发者最常用编程语句排名,console.log()一定名列前茅。但估计很多人对console.log()的认识还在只能简单的打印文本信息而已。但其实console...
注:本篇文章运行环境为当前最新版本的谷歌浏览器(72.0.3626.109)最近看到这样一道有关事件循环的前端面试题: 这道题主要考察的是事件循环中函数执行顺序的问题,其中包...
这里考核的其实是非严格相等运算符==的原理,下面是摘自MDN的解释。 相等操作符比较两个值是否相等,在比较前将两个被比较的值转换为相同类型。在转换后(等式的一边或两边都可能被...
写一个flatten函数,实现扁平化数组的效果。比如: let arr = [1, 2, [3, 4, 5, [6, 7], 8], 9, 10, [11, [12, 13]...
一、前言 缓存可以说是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。...
首先看看new具有哪些功能: 创建一个对象,对象的原型指向构造函数的prototype。 构造函数里的this指向的就是这个对象。 执行构造函数里的语句。 但还要考虑一点,构...
集合是由一组无序且唯一(即不能重复)的项组成的。这个数据结构使用了与有限集合相同的数学概念,但应用在计算机科学的数据结构中。ES6也有原生Set类的实现。集合李包含下面这些方...
链表数据结构 链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个元素由一个存储本身的节点和一个指向下一个元素的引用(指针)组成。下图展示了一个链...
队列的结构特点 队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元...
栈数据结构 栈是一种遵从后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。 ...
职责链模式的定义是:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 有这样一...
享元(flyweight)模式是一种用于性能优化的模式,“fly”在这里是苍蝇的意思,意为蝇量级。享元模式的核心是运用共享技术来有效支持大量细粒度的对象。 如果系统中因为创建...
模板方法模式是一种只需使用继承就可以实现的非常简单的模式。模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。通常在抽象父类中封装了子类的算法框架,包...
组合模式如果运用得当,可以大大简化客户的代码。一般来说,组合模式适用于以下这两种情况。 表示对象的部分-整体层次结构。组合模式可以方便的构造一棵树来表示对象的部分-整体结果。...
发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。它有两个应用场景: 可以广泛应用于异步编程中,替...