javaScript
文章平均质量分 67
Daisy__yangyang
前端工程师
展开
-
npx mrm@2 lint-staged执行报错
1、原因:node路径带有空格,Program Files之间有空格查看路径:npm config get cache得到 D:\Program Files\nodejs\node_modules\npm\node_cache2、解决办法(二选一):(1)npm config edit会弹出一个文本框,找到这个路径,将Program Files修改为Program~1,保存即可(2)npm config set cache "D:\Program~1\nodejs\node_mo..原创 2022-04-07 13:56:05 · 1550 阅读 · 0 评论 -
this 关键字
this 的原理this 的用法原创 2022-03-14 09:16:40 · 2156 阅读 · 0 评论 -
防抖和节流函数的实现
目录1、为什么需要防抖和节流?2、防抖函数实现3、节流函数实现1、为什么需要防抖和节流?(1)原因:有一些高频事件触发的场景下,我们不希望对应的事件处理函数执行多次(2)应用场景:滚动事件 输入的模糊匹配 轮播图切断 点击操作 ......浏览器默认情况下都会有自己的监听事件间隔(4~6ms),如果检测到多次事件的监听执行,或造成不必要的的资源的浪费(3)举例场景:界面上有一个按钮,我们可以连续多次点击执行防抖:对于高频率操作,我们只希望识别..原创 2022-03-10 09:51:34 · 792 阅读 · 0 评论 -
Flow[JavaScript 类型检查器]
1、快速上手yarn init --yes yarn add flow-bin --dev 新建文件夹src,在src新建文件01-getting-started.js,添加 //@flow 注释标记//@flowfunction sum (a: number, b: number) { return a + b}sum(100, 100)sum(100, '100')yarn flow init //初始化 flow yarn flow // 运行 flow...原创 2022-03-03 17:22:33 · 7808 阅读 · 0 评论 -
【js 代码面试题】
1、找出数组里元素最多的第二项题目:var array = ['aa','bb','bb','cc','cc',"cc"];思路1、遍历数组,将重复的冤死进行计数,村委对象;2、将每个元素的值放到新的数组中,通过 sort 将数组的元素进行排序;3、获取数组的第二个值,然后遍历循环对象,根据值与对象的匹配度,就可以找出出现元素最多的第二个值var array = ['aa','bb','bb','cc','cc',"cc"];//aa 1//bb 2//cc 3//思路/..原创 2021-05-17 17:45:48 · 132 阅读 · 0 评论 -
【2021 年前端复习之一】
前端性能优化经历的四个阶段第一阶段:库、框架的选型 第二阶段:简单的构建化(js/css 的压缩和合并) 第三阶段:js / css 模块化开发 js模块化方案:AMD、CMD、CommonJs、ES6Module; CSS模块化开发基本都是在less、sass、stylus等预处理器的import/mixin特性支持下实现的 第四阶段:组件化开发和资源管理参考文章:https://link.zhihu.com/?target=https%3A//github.com/foub...原创 2021-04-23 09:01:13 · 158 阅读 · 0 评论 -
前端面试锦集【二】
Javascript 基础原型 this 数据类型 / 类型转换 闭包 宏任务、微任务 函数式编程 常见错误推荐书籍:红宝书、黄皮书、ES6函数式编程指南Vue响应式原理 虚拟 dom 模板编译 常用 API 实现 vue 3推荐书籍:深入浅出 vue.js参考资料:https://juejin.cn/post/6888288504162451463webpack原理 loader plugin 优化推荐书籍:深入浅出 webp...原创 2021-03-23 10:06:02 · 120 阅读 · 0 评论 -
前端面试锦集【一】
1、项目运行没有报错,但浏览器报错:xxx 500, 这种问题该如何准确找到错误的代码HTTP 响应码 500 错误。HTTP 响应码 500 错误和你的代码没有关系,它是服务端错误:你发送了请求服务端接口,服务端返回了 500 错误。HTTP 协议中规定 5xx 的状态码都是服务端相关错误。当遇到这类状态码的时候,正确的做法是:(1)找到报错的接口(2)将详细的接口请求信息反馈给后端开发人员请求地址 请求方法 请求参数 响应参数(3)协助后端联调2、对 Vu..原创 2021-03-11 13:25:13 · 115 阅读 · 0 评论 -
JavaScript代码优化
性能优化小技巧避免全局变量全局变量挂载在 window 下 全局变量至少有一个引用计数 全局变量存活更久,但持续占用内存避免全局查找目标变量不存在于当前作用内,通过作用域向上查找 减少全局查找降低消耗 减少不必要的全局变量定义 全局变量数据局部化避免循环引用全局引用值多个对象间存在互相引用采用字面量替换 New 操作 ,例如 let arr = [ ] 代替 let arr = new Array() setTomeout 替换 setInterval 采用事...原创 2020-11-17 14:33:34 · 350 阅读 · 0 评论 -
GC(Garbage Collection)算法介绍(前端小常识)
GC定义与作用GC就是垃圾回收机制的简写 GC可以找到内存中的垃圾、并释放和回收空间GC里的垃圾是什么程序中不再需要使用的对象 程序中不再能访问到的对象GC算法是什么GC是一种机制,垃圾回收器完成具体的工作 工作的内容就是查找垃圾释放空间、回收空间 算法就是工作时查找和回收所遵循的规则常见的GC算法引用计数实现工作原理 核心思想:设置引用数,判断当前引用数是否为0 引用计数器 引用关系改变时修改引用数字 引用数字为...原创 2020-11-17 13:45:59 · 2031 阅读 · 0 评论 -
Flow使用
Flow开发工具插件 Flow-lanuage(vs code 商店中搜索) https://flow.org/en/docs/editors/ 关于lflow的插件 Flow原始类型 //flow原始类型const a: string = 'foo'const b: number = Infinity // NaN // 100const c: Boolean = true // falseconst d: null = nullconst e: void = undef.原创 2020-11-14 17:35:31 · 293 阅读 · 0 评论 -
异步模式---封装 Promise 方式的 Ajax
Promise 封装Ajax/Promise 方式的 Ajaxfunction ajax (url) { return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest() xhr.open('GET', url) xhr.responseType = 'json' xhr.onload = function () { ..原创 2020-11-02 15:11:40 · 110 阅读 · 0 评论 -
Functor (函子)
为什么要学函子 到目前为止已经已经学习了函数式编程的一些基础,但是我们还没有演示在函数式编程中如何把副作用 控制在可控的范围内、异常处理、异步操作等。什么是 Functor容器:包含值和值的变形关系(这个变形关系就是函数) 函子:是一个特殊的容器,通过一个普通的对象来实现,该对象具有 map 方法,map 方法可以运 行一个函数对值进行处理(变形关系)Functor 函子 //一个容器,包裹一个值class Container { //of 静态方法,...原创 2020-11-01 20:40:39 · 361 阅读 · 0 评论 -
前端优化性能
前端优化性能方案网络方面 1.压缩css,js文件 工具:yuicompressor-2.4.2.jar 使用压缩工具jar包进行文件压缩 执行命令:java -jar yuicompressor-2.4.2.jar api.js > api.min.js 2.压缩图片,减少资源体积 3.减少HTTP请求 使用CDN加速(内容分...原创 2019-04-26 16:23:55 · 111 阅读 · 0 评论 -
闭包的内容
闭包 (Closure):函数和其周围的状态(词法环境)的引用捆绑在一起形成闭包。 可以在另一个作用域中调用一个函数的内部函数并访问到该函数的作用域中的成员。 function makePower(power){ return function(number){ return Math.pow(number,power) }}//求平方、立方let power1 = makePower(2);let power2 = makePower(3);co.原创 2020-10-29 10:39:40 · 68 阅读 · 0 评论 -
关于函数编程的秘密
什么是函数编程为什么要学函数编程函数编程如何运用常用的高阶函数原创 2020-10-29 10:40:15 · 210 阅读 · 0 评论 -
纯函数的应用
纯函数的概念 相同的输入永远得到相同的输出 // 数组的 slice 和 splice 分别是:纯函数和不纯的函数// slice 返回数组中的指定部分,不会改变原数组// splice 对数组进行操作返回该数组,会改变原数组let numbers = [1,2,3,4,5];//纯函数console.log(numbers.slice(0,3));//[1,2,3]console.log(numbers.slice(0,3));//[1,2,3]console.log(numb..原创 2020-10-30 09:17:57 · 270 阅读 · 0 评论 -
柯里化是什么
柯里化 (Currying):当一个函数有多个参数的时候先传递一部分参数调用它(这部分参数以后永远不变)然后返回一个新的函数接收剩余的参数,返回结果 下图示例是普通函数与柯里化函数(纯函数)的对比//普通的函数function checkAge (min,age) { return age >= min}console.log(checkAge(18,20));console.log(checkAge(18,24))//高进阶纯函数(避免重复的1...原创 2020-10-30 14:41:20 · 2654 阅读 · 2 评论