自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 问答 (1)
  • 收藏
  • 关注

原创 VSCODE 设置同步network Error 问题

总共三步,快乐地打工去吧~

2023-07-12 11:43:14 1540

原创 发布npm包时,你要考虑的东西都在这了

main: 定义了npm包的入口文件,browser 环境和 node 环境均可使用module: 定义npm包的 ESM 规范的入口文件,browser 环境和 node 环境均可使用browser: 定义npm包在 browser 环境下的入口文件。

2023-06-06 02:49:44 283

原创 DFA敏感词过滤算法-JS实现

DFA(Deterministic Finite Automaton)敏感词检测算法是一种基于有限状态自动机的高效字符串匹配算法,通过将敏感词构建成一棵状态转移图,将文本逐个字符进行匹配,并根据状态转移图的规则进行状态的转移来检测是否包含敏感词,具有快速、高效的特点,在实际应用中被广泛使用。DFA敏感词检测算法是一种高效的字符串匹配算法,可以快速地在一段文本中检测是否包含敏感词。

2023-06-06 02:47:13 417

原创 发布一个npm包的经验分享

注意区分node环境与browser环境!

2023-06-06 02:46:20 496

原创 jwt 的鉴权过程与安全性分析

JWT(JSON Web Token)是一种基于标准JSON格式的轻量级身份认证和授权协议。JWT由三部分组成:Header(头部)、Payload(载荷)和Signature(签名)。下面简要介绍JWT的使用过程:用户通过用户名和密码向服务器发送登录请求。服务器收到请求后,验证用户名和密码是否正确。如果验证通过,服务器将用户信息作为Payload(载荷)加入到JWT中,并设置过期时间等信息,然后使用加密算法生成Signature(签名)。

2023-04-01 18:46:52 1202 1

原创 你管这个叫浅拷贝?

一篇水文,我说说我的理解,我希望这篇文章能帮助部分初学者在回答浅拷贝的时候不要答成赋值操作了。

2023-04-01 18:46:42 41

原创 文件上传都发生了啥

用上面的代码尝试一下。没上传任何内容打印了一下 file 变量,是 undefined,然后我上传了一张图片,再次打印后 file 变量是一个 File 函数构造出的对象了,它里面有文件的一些简略信息,如大小 size,文件名 name 以及文件格式 type 等,而且文件内容也在这个对象里,只不过以 ArrayBuffer 的方式在文件的原型链上体现,看看下面对于 File 对象的操作。

2023-04-01 18:45:35 505

原创 js v8引擎垃圾回收机制介绍

v8的垃圾回收机制。

2023-02-23 19:27:04 784 1

原创 在一个闭包环境下,父函数里没有被用到的变量还保存在内存中吗?

对的,就是因为这个作用域链,f 函数依然可以读取到 checkscopeContext.AO 的值,说明当 f 函数引用了 checkscopeContext.AO 中的值的时候,即使 checkscopeContext 被销毁了,但是 JavaScript 依然会让 checkscopeContext.AO 活在内存中,f 函数依然可以通过 f 函数的作用域链找到它,正是因为 JavaScript 做到了这一点,从而实现了闭包这个概念。我认为还在的,父函数的AO对象还会在内存中。闭包的实际过程是这样的。

2023-02-15 23:27:29 111

原创 还是要保持每日学习啊(三)

因为js通常在浏览器中运行,浏览器是多线程的,不仅仅是异步请求,包括事件监听、计时器都是交给WebAPI运行的。

2023-02-15 23:14:12 86

转载 前端重新部署通知用户刷新网页

有时候上线上好了,但用户还在用旧版,一般只有刷新之后,重新请求了网络资源才能拿到新的资源。而且旧版js的hash指向又变了,容易收到一些没必要的bug报告。

2023-02-12 16:41:48 641

原创 还是得每天保持学习呀!(二)

有关,

2023-02-04 21:46:04 94

原创 还是得每天保持学习呀!(一)

需要注意的是最后一个定时器打印出的 p1 其实是.finally 的返回值(BTW如果没有这个finally,定时器打印的promsie值也是undefined,因为then没有返回东西),我们知道.finally的返回值如果在没有抛出错误的情况下默认会是上一个 Promise 的返回值,而这道题中.finally 上一个 Promise 是.then(),但是这个.then() 并没有返回值,所以 p1 打印出来的 Promise 的值会是 undefined,.finally的返回值如果在。

2023-01-29 16:32:39 216

原创 前端布局写法原理理解与总结+记忆(两栏布局、圣杯布局、双飞翼布局)

实现两栏布局(左边固定,右边自适应,文档结构是一个父div包裹两个左右div,子元素height设置百分百自动撑满父元素)<div class="outer"> <div class="left">左侧</div> <div class="right">右侧</div></div>可能有些初学者不知道为什么下面的方法就能形成自适应的效果,这里有一些小贴士希望能帮助你们理解:1. 关于auto:width是auto会自

2023-01-25 15:02:55 927

原创 await 返回了什么

可以理解 await 后面的语句相当于放到了 new Promise 中,下一行及之后的语句相当于放在 Promise.then 中。

2023-01-23 11:07:07 6855

转载 promise里resolve的参数情况

那么也会执行该 then 方法, 并且由该 then 方法决定后续状态。那么当前的 Promise 的状态会由传入的 Promise 来决定。resolve 参数有以下几种类型。then 里正常打印。相当于状态进行了移交。

2023-01-23 10:47:28 489

原创 async、await踩坑

await把Promise解析为普通对象,async函数return的返回值是promise对象,await后转化为普通Object

2022-09-16 14:24:51 383

原创 前端 token 应该放在哪里呢?

反正是服务端加密的传过来让前端存着的,通常的存储都可以放,只不过需要防范攻击就是了。

2022-08-15 15:32:06 1833

原创 初步了解:git rebase,除 git merge 之外的另一种代码合并命令

变基操作的实质是丢弃一些现有的提交,然后相应地新建一些内容一样但实际上不同的提交。如果你已经将提交推送至某个仓库,而其他人也已经从该仓库拉取提交并进行了后续工作,此时,如果你用 git rebase 命令重新整理了提交并再次推送,你的同伴因此将不得不再次将他们手头的工作与你的提交进行整合,如果接下来你还要拉取并整合他们修改过的提交,事情就会变得一团糟。你在查看一个经过变基的分支的历史记录时会发现,尽管实际的开发工作是并行的, 但它们看上去就像是串行的一样,提交历史是一条直线没有分叉。变基(rebase)。.

2022-08-09 16:04:13 293

原创 《style scope》 css作用域保护如何修改(组件库)子组件的样式

我修改了一个组件库子组件的样式。结果啥都不起作用,但我修改了我自己写的div就可以。为啥。

2022-08-03 14:05:24 350

原创 git cherry-pick —— “拷贝”其他分支的 commit 内容到自己分支

cherry-pick 意为挑选commit 后面的一串字符串就是 commitHash 或者说 id?将目标的 Hash 拷贝下来,这里假设 123453、执行 cherry pick注意:cherry-pick 会自动提交二)扩展:它可以一次性转移多个提交可以一次性转移两个提交之间的所有提交信息,但不包含 A如果要包含 A ,就配置项如果不想自动提交,可以用 -n其他配置项见参考文章git cherry-pick 教程...

2022-07-08 18:01:18 621

原创 前端怎么打断点捏

前端的调试基础如何断点断点

2022-07-06 20:16:12 8383

原创 使用rem

简介rem作为一个单位, 经过合理的换算, 就可以当px一样使用.公式rem = (designWidth/windowWidth)* 100这里的100为我们在设计图中设置的1rem的大小,也叫基准值。跟随窗口变换的代码$(function(){ function setRem(){ var windowWidth = $(window).width(); console.log(windowWidth); var rem = parseInt(windowWidt

2022-03-23 11:25:35 121

原创 js等待回调函数返回结果

当然是使用async或者promise啦见该文章

2022-03-06 19:31:47 1726

转载 数组常用函数整理

/** * JSFrame Name:EasyJs * File Name:JSFrame * Date:2014-11-28 上午10:50:09 * Copyright (c) 2014, China Link Communications LTD All Rights Reserved. * Author:by sicd * Describe: * Commonly used function of js code * */ /** 1、原生JavaScript

2022-02-27 09:37:07 88

原创 React Fiber —— 帮 React 15 解决性能问题的新特性

是 React 16 一个新特性,解决了 React 16 之前同步更新的性能问题

2022-02-26 18:40:02 524

原创 浏览器渲染原理的学习与总结

参考文章:浏览器渲染原理浏览器渲染原理1. 进程和线程进程包涵线程,微信是一个进程, 里面有很多诸如用户登录等线程.a.线程共享内存, 进程独立内存:进程与进程之间是相互独立的, 他们各自有各自的内存, 而线程之间是独立的, 但他们共享同一个内存空间.b.线程依赖进程, 进程控制线程没有进程, 线程就不存在, 需要进程来控制多个线程的执行.c.「为了提升浏览器的稳定性和安全性,浏览器采取了多进程模型。」如果一个页面有问题,不影响其他页面的运行。2.浏览器进程架构[外链图片转存失败,源

2022-02-06 15:57:30 803

原创 JS 运算符优先级

参考文章:教你读懂 js 优先级参考文章:都2020了,还不懂js运算符优先级?

2022-02-01 21:48:16 498

原创 阻止事件冒泡\事件捕获 [无废话版]

(一) 前言1.1 Dom 事件流捕获阶段处于目标阶段冒泡阶段DOM事件流中,实际的目标在捕获阶段不会接收到事件,下一个阶段是处于目标阶段,这时事件被触发,最后进入事件冒泡阶段。我们认为处于目标阶段是事件冒泡阶段的一部分。1.2 监听事件如何切换冒泡与捕获改变 addEventListener 的第三个参数:接收布偶值,默认为 falsetrue 为采用事件捕获document.getElementById("third").addEventListener("click",fu

2022-01-31 17:28:02 2006

原创 一道考察范围挺广的题

知识点new 等运算符的优先级settimeout 函数和立即执行函数的作用域是上一级作用域。函数提升优先于变量提升,但最后的赋值结果看谁是最后赋值的,函数在预编译的时候就会进行赋值(一边声明,一边赋值。),然后再是变量的赋值。最后变量的赋值就覆盖了函数的赋值。var name;function name(){ console.log(1);} console.log(typeof name);//functionname = 12console.log(typeof nam

2022-01-22 16:08:26 198

原创 变量提升和函数提升哪个优先

问题首先:普遍认为函数声明提升优于变量提升但为什么下面的结果是这样的呢(第一个输出我们好理解,因为是先编译后赋值,编译的时候先声明了var 和 function,之后再进行赋值)预编译看这篇console.log(typeof a); // functionvar a = 1;function a(){}console.log(typeof a); // number解释:肯定是函数声明优先,但最后的结果要看谁最后赋值函数声明先赋值,变量声明执行到赋值语句才赋值因为两种声明方式共同

2022-01-22 14:43:03 1073

原创 谷歌使用技巧

跳转:13个高效使用Google搜索的技巧

2022-01-21 19:52:36 306

原创 git提交报错 OpenSSL SSL_read: Connection was aborted, , errno 10053

说白话就是一次性上交代码太多了Git默认限制推送的大小,运行命令更改限制大小即可修改一下配置git config --global http.postBuffer 524288000参考文章:

2022-01-20 17:06:13 1549

原创 vs code git 提交 fatal: remote origin already exists 远程仓库已经存在

fatal: remote origin already exists1、删除远程仓库git remote rm origin2、将远程仓库添加到分支git remote add origin https://github.com/xxx/xxx.git 3、重新推送参考:Git 提示fatal: remote origin already exists 错误解决办法...

2022-01-20 17:04:09 347

原创 JS继承-(二)原型式继承、寄生式继承、寄生组合继承

原型式继承原理等同ES5的Object.create()方法,创建一个函数,使这个函数成为括号中obj的构造函数,也就是这个函数的原型指向这个obj然后返回这个构造函数的实例,是一个浅拷贝,新实例的引用数据类型改变会让原来的obj改变 //原型链继承好像都会提升添加属性的代码。并不是这样的,可能只是f12的错误!!是个欺骗 //O obj_c = { name:'小李', sex:'male',

2022-01-19 18:31:55 509

原创 JS 继承-(一)原型链继承、构造函数继承、组合继承

前言都说了 JS 是面向对象的语言啦,单线程。拥抱面向对象继承、封装、多态原型链继承核心:一个子类函数的 prototype 指向父类函数的实例child.prototype = new parent() function foo1() { this.name = '小明'; } function foo3() { this.size = 'max' } foo3.prototype = new foo1(); //1.原型链继承

2022-01-18 16:34:07 434

原创 你不知道的JS阅读笔记——(2)提升和闭包

1、提升函数声明提升的优先度比变量提升的优先度要高函数表达式不会提升2、闭包2.1 简介函数内声明函数可以说是闭包,但准确的来说并不是。闭包:某函数在声明的作用域外被调用并且能够阻止「原作用域」的销毁,以及使用原作用域内的变量闭包和块作用域结合是最屌的var result = [];var a = 3;var total = 0;function foo(a) { //3.这里如果被改为let i 将会是绝杀,可惜改不得,因为let会在每一次的迭代里面生成一个封闭的作用域

2022-01-16 13:55:31 180

原创 如何去介绍自己的项目

如何去介绍项目?解析:首先描述自己所做项目有哪些功能模块,然后描述其中单个模块有哪些功能,再对其中的一个单独功能进行详细描述,中间可以穿插一下遇到的技术问题,循环往复,和面试官保持平等对话。举例:我在上家单位最近做的项目是一个基于 ajax 和 template 完成了一款文章资讯类的项目,其中包含登录功能,一文章列表渲染等功能,通过封装单独的 API 文件,为了保证业务逻辑之前更加清晰,配合 ajax 完成了对文章分类功能的数据渲染,以及实现删除文章,以及修改,添加文章等操作...

2022-01-16 12:58:46 548

原创 call、bind、apply三者的区别

call写了就等于直接调用函数foo.call(obj,要传给函数的参数1,要传给函数的参数2...)apply写了就等于直接调用函数区别于 call 就是后面参数的传入,其他都一样foo.apply(obj,[要传给函数的参数1,要传给函数的参数2...])bind写了还要加括号才算调用函数跟 call 参数设置一样foo.bind(obj,[要传给函数的参数1,要传给函数的参数2...])相同点这三个都能够改变 this 指向call 和 apply 的第一个参数都一样是

2022-01-15 16:57:59 2689

原创 ES6的新特性

ES6的新特性(1)变量声明:由var变为let和const;(2)模板字符串:使用反引号``;在模板字符串里面支持换行,并可以在里面使用${}来包裹一个变量或表达式;(3)解构:有***数组解构***和***对象解构***;可以快速获取数组和对象的值;//解构赋值const foo = [1,2,3,4,5]const [a,bd,e] = foo //数组解构 按顺序赋值console.log(a,bd,e); //1,2,3const foo2 = { name:'lulul

2022-01-15 15:16:45 191

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除