CodingWithAlice

我的一方小天地,如果对你有帮助,那真的太好了

柯里化函数 / 反柯里化函数实现

柯里化函数 / 反柯里化函数实现 柯里化:把 接受 多个参数 的函数 变换成 接受一个 单一参数 的函数,并且返回 接受余下的参数而且返回结果的新函数 / 将一个多参数函数转换为一系列单参数函数的过程 别名:部分求值 常见错误点:让直接实现一个 add(1)(2)(3) 的函数,其实就是柯...

常见Webpack问题

常见Webpack问题 总结: webpack的几个核心概念理解:Chunk、Module、plugin 2、常见配置项:entry、output、module、resolve等 自定义 loader 怎么配置? Code Splitting 和 Tree Shaking 的区别?懒加载怎么实现? ...

babel 作用+原理+补丁

babel 作用+原理+补丁 总结: 作用:已知 babel 用于将 es6 语法转换成浏览器普遍支持的 es5 语法,使开发能够使用便捷的 es6 进行开发 工作原理:先将 ES6 源码转换为 AST,然后再将 ES6 语法的 AST 转换为 ES5 语法的 AST,最后利用 ES5 的 AST 生成 JavaScript 源代码 解析(Parsing-...

Uglify - 代码压缩原理

Uglify - 代码压缩原理 参考文章:[从一个误写的逗号谈开去——JS代码是如何被压缩的](https://www.h5w3.com/19480.html) 核心要点记录: 代码压缩原理 示例: 原始代码 code:var a;var x = { b: 123 };a = 123,delete x; 压缩后 code:var a,x={b:123};a=123,del...

大量图片加载优化

大量图片加载优化 大量图片带来的问题 1、并发数量限制带来的 排队时间:浏览器对于同一个域名,最多支持 6 个请求的并发(HTTP/1.1限制),其他的请求将会推入到队列中等待或者停滞不前,直到六个请求之一完成后,队列中新的请求才会发出 2、某些图片 体积大,下载慢 解决方案 1、针对 非首屏视口 需要的资源 延迟加载; 2、域名切分,同时期可以发起 更多的并发请求; ...

防抖节流

防抖节流 总结: ​ 平时键盘抬起就会搜索,防抖后,间隔一段时间不输入才会搜索,节流后,在频繁触发的事件流中,函数以固定的频率执行。 1、 函数防抖 类似法师技能读条,还没读完条再按技能,会重新读条 防抖的原理就是:触发事件,但是我一定 在事件触发 n 秒后才执行,如果你在一个事件触发的 n 秒内又触发了这个事件,那我就 以新的事件的时间为准,n 秒后才执行,总之,...

bind、apply/call三者异同+apply/call实现bind

bind、apply/call三者异同+apply/call实现bind 共同点 改变函数执行时的上下文 this 『第一个参数 **如果不传,则默认为全局对象 `window`**』 区别 apply/call 立即执行 ;bind 方法的返回值是函数,需要 再次调用,才会执行 第二个参数:call -...

怎么判断数组类型?4种方法

怎么判断数组类型?4种方法 Array.isArray,instanceof,constructor,Object.prototype.toString.call(),typeof ① Array.isArray方法【最靠谱】 MDN:它不检查值的原型链,也不依赖于它所附加的 Array 构造函数。 对于使用数组字面量语法或 Array 构造函数创建的任何值,它都会返回 tru...

数组扁平化(一层、全部展开、指定深度)

数组扁平化(一层、全部展开、指定深度) 参考文章:数组拍平连环问 - 只研究到第二问 reduce,没有再深入,一共七问 题目: 如何实现 flat 方法?多维数组=>一维数组 方法总结: 展开一层: 1、concat直接传一组参数:『[].concat(...arr) 』 2、concat通过apply/call传参数:[].concat...

204. 计数质数

204. 计数质数 题目: 统计所有小于非负整数 n 的质数的数量。 解答: 方法一:暴力遍历 - 超时 时间复杂度:O(n*sqrt(n)),空间复杂度:O(1) var countPrimes = function (n) { let times = 0; if (n < 2) { return 0 ...