- 博客(66)
- 收藏
- 关注
原创 数据结构和算法
程序执行时需要的计算量和内存空间(和代码是否简洁无关)复杂度是数量级(方便记忆、推广),不是具体的数字一般针对一个具体的算法,而非一个完整的系统链表: 链表是一种物理结构(非逻辑结构),类似于数组;数组需要一段连续的内存区间,而链表是零散的;链表节点的数据结构{value, next?, prev?
2023-04-12 12:00:54
601
原创 flat(),flatMap() 超全详细用法
方法的参数是一个遍历函数,该函数可以接受三个参数,分别是当前数组成员、当前数组成员的位置(从零开始)、原数组。该方法返回一个新数组,不改变原数组。用于将嵌套的数组“拉平”,变成一维的数组。上面代码中,遍历函数返回的是一个双层的数组,但是默认只能展开一层,因此。默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将。方法的参数写成一个整数,表示想要拉平的层数,默认为1。方法将子数组的成员取出来,添加在原来的位置。的参数为2,表示要“拉平”两层的嵌套数组。上面代码中,原数组的成员里面有一个数组,
2023-03-28 10:05:12
1209
原创 includes() 超全详细用法
方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于。另外,Map 和 Set 数据结构有一个has方法,需要注意与includes区分。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为。下面代码用来检查当前环境是否支持该方法,如果不支持,部署一个简易的替代版本。方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的。,表达起来不够直观。该方法的第二个参数表示搜索的起始位置,默认为。使用的是不一样的判断算法,就没有这个问题。
2023-03-27 17:51:44
2091
原创 entries(),keys() 和 values() 超详细用法
ES6 提供三个新的方法——entries(),keys()和values()——用于遍历数组。它们都返回一个遍历器对象,可以用for...of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。
2023-03-27 17:45:11
645
原创 find() 和 findIndex() 超全详细用法
数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。
2023-03-27 16:05:57
591
原创 copyWithin() 超全详细用法
数组实例的`copyWithin()`方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。
2023-03-27 15:04:42
530
原创 Array.from() 超全用法详解
Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。
2023-03-27 14:39:11
5679
原创 JS数组reduce()方法详解及高级技巧
reduce()方法可以搞定的东西,for循环,或者forEach方法有时候也可以搞定,那为啥要用reduce()?这个问题,之前我也想过,要说原因还真找不到,唯一能找到的是:通往成功的道路有很多,但是总有一条路是最捷径的,亦或许reduce()逼格更高…
2023-03-21 15:22:10
597
原创 npm发布包教程(五):废弃/删除
最后,我觉得作为一个开发者,我们有责任和义务维护每一个社区的纯净,所以在发布npm包的时候应该尽量精益求精,避免发一些没有价值的东西给其他人造成困扰。npm不鼓励任何形式的删除,主要因为我们发布的包可能已经被其他人引用,如果我们删除了此包,其他人在重新安装含有我们包的依赖的工程时,出现找不到包问题。至此,我们完成npm包的整个生命周期的演示过程,大家可以开源的道路上又多了一条很重要的道路。只有发布72小时之内的包可以删除!在test-my-pkg目录下。删除的版本24小时后方可重发!记录的版本号并无变化。
2023-03-20 13:53:26
2479
原创 npm发布包教程(四):迭代
一个npm包发布之后,我们难免会修改一些bug,或者增改一些功能,这就涉及到对npm包的迭代。本篇文章就npm迭代涉及到一些知识点进行介绍。本次演示以《npm发布包教程(二):发布包》中发布的包为基础。我们首先来演示内容的变更,以yuyy-test-pkg为例。
2023-03-20 13:27:57
303
原创 npm发布包教程(三):安装和加载原理
我们在上一篇《npm发布包教程(二):发布包》中演示了如何发布npm包,npm仓库有了我们自己的包,接下来就进入到安装并使用我们自己的包的环节。
2023-03-20 13:15:15
344
原创 npm发布包教程(二):发布包
上一篇文章《npm发布包教程(一):从npm说起》中我们介绍了npm相关的一些知识,旨在让大家对npm有一些深入的理解,这一篇我们正式开始演示发布过程。
2023-03-20 11:25:36
713
原创 npm发布包教程(一):从npm说起
作为一个前端,每个人应该对npm install这个命令应该非常熟悉了,尤其是对这个命令执行过程中命令窗口疯狂输出肯定印象深刻。我发现有的同学对安装包轻车熟路,但对包从哪里来的以及如何发布一个npm并不是很了解,基于此,在团队内部做了一次分享,将分享过程整理如下,希望对每一个想发布自己的包但又不知从何开始的同学有所帮助。由于发布包涉及到发布、安装、更新、删除/废弃等阶段,写在一篇文章中篇幅过长,决定拆开做成一个系列。今天第一篇首先介绍一下npm相关的一些知识。
2023-03-20 10:11:58
335
原创 BFC详解
BFC(Block formatting context)直译为“块级格式化上下文它是一个独立的渲染区域,只有Block-level box参与,它规定了内部的Block-level box如何布局,并且与这个区域外部毫不相干。在官方文档到中,是这么介绍BFC的。强行翻译一下吧,简单来说,这句话的意思就是:一个BFC区域包含创建该上下文元素的所有子元素,但是不包括创建了新的BFC的子元素的内部元素。一个BFC区域只包含其子元素,不包括其子元素的子元素.
2023-03-15 11:01:46
387
原创 splice和slice的区别
splice会改变原数组,他通过删除或者替换现有元素或者原地添加新的元素来修改数组,并且以数组形式返回被修改的内容。有三个参数:start,指定修改的开始位置,如果超出数组的长度,则从数组末尾开始添加;start,起始索引,从该索引提取原数组元素,如果是负数,则从末尾开始;如果省略start,则默认是数组的0下标开始end,结束索引,在该索引结束提取原数组元素,如果end被省略,slice会一直到末尾;这个方法接受三个参数,我们在使用的时候可根据自己的情况传递一个参数,或两个参数,或者三个参数。
2023-03-13 16:10:11
457
原创 effectScope() getCurrentScope() onScopeDispose() 用法区别
创建一个 effect 作用域,可以捕获其中所创建的响应式副作用 (即计算属性和侦听器),这样捕获到的副作用可以一起处理。对于该 API 的使用细节,请查阅对应的。
2023-03-13 15:41:46
203
原创 防抖与节流函数
防抖和节流的作用都是在高频事件中防止函数被多次调用,是一种性能优化的方案。区别在于,防抖函数只会在高频事件结束后n毫秒调用一次函数,节流函数会在高频事件触发过程当中每隔n毫秒调用一次函数。
2023-03-13 15:29:06
66
原创 Vue 高频面试题
闭包 =>特性?数据的私密性,延长变量生命周期为了保持各个组件的数据隔离我们知道JS中实例对象是通过构造函数来创建的,每个构造函数可以new出多个实例,每个实例都会继承原型上的属性和方法。那么在vue中,一个vue组件就是一个vue实例,当一个组件被复用多次就会创建多个实例。如果data是对象,那么多次复用的组件在某一处改变了data数据,就会影响到其他处复用这个组件的地方,因为对象是引用数据类型,是对内存地址的引用,牵一发而动全身。
2023-03-10 13:25:46
60
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人