- 博客(20)
- 收藏
- 关注
原创 JS深拷贝的实现
由于JS引用类型赋值时传递的是内存地址,这会导致改变其中一个变量值后,其它相关变量也会跟着改变。如果要改变这种现象,使得赋值后的两个变量不再有所关联。就需要用深拷贝方式赋值。深拷贝是使用递归方式,遍所有引用类型并拷贝所有值类型,最终得到一个内容相同的全新引用类型数据。
2024-03-22 11:44:51
187
原创 JS数据类型分类与区别
引用类型的特点是其赋值实际上传递的是内存地址的指针,故其赋值后改变原变量的值时,新变量值会一起改变。null本质是一个空的地址,所以进行深拷贝时,要将null当作值类型来处理。值类型的特点是可以直接赋值,赋值后改变原变量的值不会使新变量改变。js数据类型大体分为。
2024-03-18 20:08:42
372
原创 Promise状态变化
promise共有三种状态:pending(待定中)| resolved(已完成)| rejected(已拒绝)。其状态变化过程有两种:pending >>> resolved 或 pending >>> rejected.状态变化过程不受外界影响,结果不可逆转。
2024-03-06 20:52:50
473
原创 二分查找实现
二分查找 binary search」是一种基于分治策略的高效搜索算法。它利用数据的有序性,每轮缩小一半搜索范围,直至找到目标元素或搜索区间为空为止。其实现方法为每轮都找到目标区间中间的值与要检索的值进行对比,若大于则丢弃右半区,若小于则丢弃左半区,若相等则返回结果。由于是一轮一轮的查找,基于此可以用递归或是while循环实现。
2024-03-05 20:46:26
338
原创 JS变量声明--var, let, const 的区别
JS变量声明--var, let, const 的区别letconstES6之前,我们都是使用 var 来声明一个变量。在ES6中,又新增加了 let 和 const 关键字用来声明变量。那么它们之间有何不同呢?下面本文将一一说明:letlet的用法与var十分相似,只是在功能上有以下几点不同:let 声明的变量只在定义的代码块内有效。比如下面代码中输出b就会报错!{ var a = 1; let b = 2;}console.log(a) // 1console.log(b)
2020-06-11 20:50:06
300
1
原创 JS实现批量并发请求
要求:实现一个批量请求函数 multiRequest(urls, maxNum),要求最大并发数 maxNum,每当有一个请求返回,就留下一个空位,可以增加新的请求,所有请求完成后,结果按照 urls 里面的顺序依次打出。// 模拟ajax请求function majax(url) { return new Promise((resolve, reject)=>{ setTimeout(() => { const res = {
2020-06-10 22:59:10
5604
原创 js 获取汉字字符串长度
在Unicode编码中,由于码点大于0xFFFF的字符必须用双字节表示,导致使用String.length获取这些字符串长度时会返回2。例如:"啊".length// 1"????".length// 2那么我们该如何正确的获取包含这些字符的字符串长度呢?此时可以使用ES6新增的扩展运算符(...)将字符串转为数组,然后获取数组的长度。like:[..."????"].length// 1...
2020-06-10 20:07:24
2351
原创 记 egret 颜色传值踩坑
今天遇到了一个很蛋疼的问题,用egret引擎开发的小游戏发布到微信小游戏后,使用Win PC的客户端打开后发生了闪退。why? 内存爆了?运行环境问题?nonono!多方追查下发现原因是这个:// spTxt: egret.textFieldspTxt.strokeColor = 1.5;可以看到,描边颜色被设置成了1.5。。。在egret官网,对颜色值的要求是:可以接受一个16进制的颜色值,也可以接受其他进制的数字。但推荐使用16进制。这样一看1.5也没问题啊!但是再看一下
2020-06-03 20:41:27
981
原创 记实现 Promise.retry()
要求:实现 Promise.retry,成功后 resolve 结果,失败后重试,尝试超过一定次数才真正的 reject。Promise.retry = (fun, limit = 5) => { return new Promise((resolve, reject) => { let __num = 1; let __run = () => { fun() .then(res => {
2020-06-02 10:35:03
865
原创 JS生成随机汉字
咱们的汉语可谓博大精深,汉字量更是十分庞大,计算机想要随机生成汉字,可以通过随机生成16进制的Unicode编码来实现。关于Unicode编码,可以参考百度百科中的说明:Unicode-百度百科。Unicode编码是16进制数,其中汉字对应范围为4E00-9FA5,转换为10进制数就是19968-40869 。so...function getRandomChineseWord () { var _rsl = ""; var _randomUniCode = Math.f.
2020-06-01 20:45:32
9288
3
原创 快速排序
快速排序是对冒泡排序的一种改进,它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行上述分割操作,直至整个序列有序。整个过程可以使用递归分割过程进行实现。var arrs = [8, 19, 3, 7, 1, 31, 17, 6]function quicksort (arr, i, j) { let __arr = [...arr]; qsort(__arr, 0, __arr.
2020-05-30 16:33:01
192
原创 汉诺塔问题解析
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。——百度文库这个问题可以用递归的方法解决。假设把n片圆盘由A柱移动到C柱,B柱为中转站,...
2019-09-24 11:58:17
791
原创 vue项目兼容IE浏览器
vue项目在IE浏览器中运行会显示空白,是因为IE不兼容ES6语法。解决方法如下:1、添加babel-polyfill模块npm install babel-polyfill --save2、在build/webpack.base.conf.js文件中,修改entry: { app: './src/main.js'}为entry: { app: ...
2019-08-19 10:01:28
318
原创 使用git hooks实现代码自动部署更新
环境:CentOS 7先说下整体思路:在服务器中创建远程仓库A(裸仓库)和本地仓库B(一般仓库)。然后在仓库A中创建使B git pull A的脚本,并每当有用户 git push A的时候就触发该脚本。1. 初始化两个仓库两个仓库的目录分别是 A:/home/mycode/test.git 和 B:/home/www/test.git创建仓库A可以参考点击打开链接。创建仓库B则如同在本地创建仓库...
2018-04-05 13:42:25
7840
原创 在服务器CentOS创建Git远程仓库
环境:CentOS 71. 安装gityum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-develyum install git2. 创建一个新用户--gitadduser git #添加用户gitpasswd git #更改git的密码#然后按照提示连输2次...
2018-04-05 13:04:31
4117
原创 使用forever让nodejs服务在后台运行
当用户断开客户链接时,nodejs的应用也随之停止。而使用forever就可以让nodejs的应用像服务一样在后台继续运行。npm install forever -g #安装forever start app.js #启动应用forever stop app.js #关闭应用forever restart app.js #重启应用forever stopall ...
2018-03-31 23:31:32
2247
原创 阿里云ECS安装MongoDB
环境:阿里云ecs(CentOS 7 64位)过程:Linux下有两种方法:1.自己去官网下载安装包解压后安装。2.使用yum下载安装。笔者使用的yum,首先推荐参考官方的说明文档点击打开链接。笔者也是参考官方的文档一步步来的。配置yum包管理系统vim /etc/yum.repos.d/mongodb-org-3.6.repo配置信息[mongodb-org-3.6] name = Mongo...
2018-03-30 23:09:04
6505
1
原创 js数组排序
/* 数组排序 * sortArr(arr,key,order) * arr : 必填,要进行排序的数组 * order : 排序顺序(布尔值,true为从小到大,false为从大到小) * key : 排序依据(一维数组不填,二位数组为下标值,对象数组为对象key值) * 注意 : 返回新数组,不改变原数组 * */
2017-02-09 19:54:41
266
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人