
前端面试
文章平均质量分 89
参宿7
路虽远行则将至,事虽难做则必成
展开
-
ES6-ES13符号:单双引号、变量的解构赋值、占位符 、字符串模版`${} `、扩展运算符...、?,??,_,||=,&&=,in
是 truthy 值(不是 false、null、undefined、空字符串、0、NaN),则将。是 falsy 值(false、null、undefined、空字符串、0、NaN),则将。且等于(&&=) : a &&= b 等同于 a && (a = b);或等于(||=) :a ||= b 等同于 a || (a = b);) 的情况下不会引起错误,该表达式短路返回值是。含局部变量时用模板字符串(反引号 ``` `)链式运算符,不同之处在于,在引用为空 (原创 2024-07-14 10:18:17 · 1151 阅读 · 0 评论 -
Promise面试题
【代码】Promise面试题。原创 2024-04-21 14:44:14 · 588 阅读 · 0 评论 -
JSON数据处理以及常用方法
如果是一个字符串,表示使用该字符串作为缩进。如果是一个数字,表示缩进的空格数;原创 2023-12-14 10:58:25 · 1419 阅读 · 0 评论 -
h5兼容移动端【调试vconsole +单位postcss-pxtorem】
此Hook利用了的resize事件,处理移动设备上因等导致视口变化API 提供了有关视觉视口(visual viewport)的信息,即用户实际看到的部分,这部分可能会因为UI元素(如地址栏和键盘)的显隐而改变。原创 2024-04-19 21:43:08 · 888 阅读 · 0 评论 -
自定义请求Hook和数据请求库SWR
method?: string;})});原创 2024-04-19 15:10:27 · 767 阅读 · 0 评论 -
navigator.clipboard/ textarea 选择剪切
如果不支持或者用户没有授权访问剪贴板,代码会回退到使用一个不可见的。API 来复制文本。元素来实现复制功能。原创 2024-04-19 11:38:56 · 521 阅读 · 0 评论 -
应用场景中的localstorage
【代码】应用场景中的localstorage。原创 2024-04-18 16:23:36 · 318 阅读 · 0 评论 -
json diff patch
文件和图片的比对靠字符串。原创 2024-04-17 22:27:59 · 963 阅读 · 0 评论 -
【不变,拖延,少做 分类】前端性能优化
1.做(三省):懒能不能?的:减少渲染+缓存静态资源;如果要做,能不能?紧急缓慢/万一不用做了的:延迟非必要+预处理必要;拖不下去的时候,能不能?:压缩体积,多路复用2.能否更快更好3.预防。原创 2024-04-16 22:54:12 · 915 阅读 · 0 评论 -
js看代码说输出【原型、闭包、this、变量提升、setTimeout、promise、async】
Js引擎为了让microtask尽快的输出,做了一些优化,连续的多个then(3个)如果没有reject或者resolve会交替执行then而不至于让一个堵太久完成用户无响应,不单单v8这样其他引擎也是这样,因为其实promuse内部状态已经结束了。编译器会从左到右一个字符一个字符解析,如果已解析的字符已经能够组成一个符号,再解析下一个字符,判断下一个字符能否和已解析出的符号再次组合成一个符号,如果能,再不断重复如上过程;上找,找到toString方法,toString方法的length是1。原创 2023-09-24 22:39:04 · 424 阅读 · 0 评论 -
手写栈【解析数学表达式,重复字符串解码】
【代码】手写栈之运算【解析数学表达式,重复字符串解码】原创 2024-02-01 15:42:24 · 287 阅读 · 0 评论 -
css预处理器之sass(scss)
mixin中插值不能作为赋值语句的值部分,只能用做属性名定义或者选择器构建时@include中不能使用插值。通过 @extend 调用的占位符,编译出来的代码会将相同的代码合并在一起.1、类似 CSS 的注释方式,使用 ”/* ”开头,结属使用 ”*/ ”%声明的代码,如果不被 @extend 调用的话,不会产生任何代码。在除法运算时,如果两个值带有相同的单位值时,除法运算之后会得到一个。比如在不同的地方调用一个相同的混合宏时,不能将两个。2、类似 JS的注释方式,使用“//” 两者区别,原创 2023-11-29 22:24:00 · 2172 阅读 · 0 评论 -
【面试】typescript【类成员,接口interface与别名type,高级/工具类型】
TS与java不同,TS默认隐式。所以可以通过ts特有的元组限制。但有时需要存储不同类型的值。原创 2023-11-29 17:16:32 · 1322 阅读 · 0 评论 -
手写promise A+、catch、finally、all、allsettled、any、race
同步版1.将promise的resolve和reject函数传给实例用2.实例给resolve和reject函数传值。原创 2023-11-28 23:13:50 · 640 阅读 · 0 评论 -
【无需后端支持】axios取消请求cancelToken和AbortController
点击或拖拽上传文件-- 使用正则表达式替换所有点号 -->请上传{{ format.replace(/\./g, "") }}格式文件,上传多份文件时以最后一次为准原创 2023-08-07 21:17:56 · 2443 阅读 · 2 评论 -
原型、this、闭包,for四类循环,ES6-14(2023)
可以将一个多参数函数转化为一系列只接受一个参数的函数,这使得参数可以在不同的环境中被复用。柯里化可以更容易地进行函数组合,将多个小函数组合成更大的函数,提高代码的可读性和可维护性。或等于(||=) a ||= b 等同于 a || (a = b);且等于(&&=) a &&= b 等同于 a && (a = b);这一个修饰符,但是这个修饰符只会在我们写代码的时候限制我们,真正。可以部分应用函数,只传递部分参数,返回一个接受剩余参数的新函数。,然后释放内存,所以将不需要的对象设为。原创 2023-08-16 17:26:54 · 1931 阅读 · 0 评论 -
【前沿技术了解】web图形Canvas、svg、WebGL、数据可视化引擎的技术选型
不同库使用不同的渲染技术。使用G2(canvas),f2(移动端),G6(用于图关系数据)、L7(三维)WebGL等更高级的技术。将一张跨域的图片绘制到 canvas 上,这个 canvas 就是被污染的,此时无法读取该 canvas 的数据。了解底层原理可以帮助你更好地优化代码和解决问题,因为你对系统如何工作有更深入的理解。在遇到复杂问题时,缺乏底层原理的理解可能会限制你找到最佳解决方案的能力。在不设置宽高的情况下,默认为300 * 150,超出部分会被隐藏。,它是浏览器提供的绘制动画的 api。原创 2023-11-26 22:24:54 · 954 阅读 · 0 评论 -
原生DOM事件、react16、17和Vue合成事件
CustomEvent构造函数。原创 2023-11-26 16:22:08 · 666 阅读 · 0 评论 -
Vue2、3组件通信、双向绑定、插槽slot、内置指令、事件修饰符
除了传递基本的值之外,还可以传递其他类型,比如对象或数组。语法糖:value默认情况下,v-model会使用子组件的value属性作为 prop 名,使用input事件来触发更新。适应不同的数据源,与其他组件集成不会产生命名冲突。比起value更具有语义,使其他开发者更容易理解组件的预期用法和行为。props: {// 使用自定义的 prop 名 customProp},// 通过 model 选项自定义 v-model 的 prop 和事件名。原创 2023-07-18 10:59:54 · 3070 阅读 · 0 评论 -
react组件通信
4、将子组件中想要传递给父组件的数据,作为参数传递给这个函数。3、子组件通过props获取到父组件传递过来的西数,并旦地。,这样就可以在逻辑中通过this.context。也可以定义一个静态方法。2、将函数作为属性的。属性进行向下传递的,那么接收的语法是通过。原创 2023-11-24 23:06:04 · 1066 阅读 · 0 评论 -
浏览器缓存、本地存储、Cookie、Session、Token
=原创 2023-11-24 19:28:19 · 2213 阅读 · 0 评论 -
webpack
Webpack基于它将根据系进行,然后将这些模块( js、css、less )按照指定的规则生成对应的静态。。原创 2023-11-23 00:51:34 · 686 阅读 · 0 评论 -
模块化Common JS 和 ES Module
一个模块=实现的。共享时,同名变量冲突:下层 js 能调用上层 js 的方法,但是上层 js 无法调用下层 js 的方法。原创 2023-11-19 16:39:46 · 568 阅读 · 0 评论 -
(封装)请求传参、请求方式、请求/响应头
=原创 2023-11-14 17:41:07 · 1365 阅读 · 0 评论 -
HTTP与HTTPS,HTTP版本,状态码
无状态是指服务端无状态是指服务端不会存储每次的会话信息,对于客户端每次发送的请求,都认为它是一个新的请求,上一次会话和下一次会话没有联系。的全称是Transport Layer Security,即安全 传输 层协议。的全称是Secure Sockets Layer,即安全 套接 层协议。1.0->1.1(一次传输多个文件,默认。HTTP/2和HTTP/3,主要支持。用SSL/TLS对数据进行。表示客户端发送了一个带有。服务器返回此响应(对。将请求者转到新位置。原创 2023-11-14 17:40:35 · 1609 阅读 · 0 评论 -
手写实现js类/方法【改变this、map、Object、发布订阅、promise】
Object.create法创建一个新对象,使用现有的对象来提供新创建的对象的proto。原创 2023-11-14 15:14:58 · 124 阅读 · 0 评论 -
promise与 fetch、async/await
包裹,这样传进promise.all的数据都是resolved状态的。catch方法返回的promise实例会被。在Promise里,执行顺序是。原创 2023-11-14 14:38:33 · 798 阅读 · 0 评论 -
react-redux与MobX状态库
原创 2023-11-08 21:59:21 · 160 阅读 · 0 评论 -
vue2【Options 选项API、mixin混入】,vue3【Composition 合成API、hooks,script setup语法糖】
setup() {//ref函数来创建一个响应式的数据');return {message,Vue3.2 中 只需要在script标签上加上setup属性...原创 2023-10-29 15:04:04 · 373 阅读 · 0 评论 -
Vue2,3响应式原理,ref和reactive,toRef和toRefs,shallowRef和shallowRefs
由于Proxy是基于原生的Proxy对象实现的,所以可以更好地支持TypeScript等静态类型检查工具,提供更准确的类型推导和代码提示。被代理对象上的自定义行为(定义一组处理函数(例如get、set)的对象)receiver:代理者 ,Proxy 或者继承 Proxy 的对象。操作,这使得数据变化的检测更加高效。因为使用 reactive 定义的响应式对象在进行。,而Proxy可以一次性监听整个对象的操作。函数返回的对象里的属性 自动就有响应式。的方法都是一一对应的,在。Proxy可以监听对象的。原创 2023-10-28 23:51:33 · 567 阅读 · 0 评论 -
Vue2响应式原理及defineProperty无法检测增删属性、数组方法改变元素问题的解决
先初始化一个 dep 实例如果是对象就调用 observe,递归监听,以保证不管结构嵌套多深,都能变成响应式对象然后调用Object.defineProperty() 劫持对象属性的 getter 和 getter如果获取时,触发getter 会调用 dep.depend()把观察者push 到依赖的数组 subs里去,也就是依赖收集如果更新时,触发setter会做以下操作新值没有变化或者没有 setter 属性的直接跳出如果新值是对象就调用observe() 递归监听通过对。原创 2023-10-28 00:27:44 · 333 阅读 · 0 评论 -
虚拟DOM,render【React、Vue】
react-dom.development.js 或 react-dom/client模块 -> Diff算法 + 处理真实DOM。每一个标签都转为一个VDOM对象,这个对象可以有三个属性。Vue 的模板会自动编译为渲染函数,生成虚拟 DOM。里面的组件源码里就有大量直接写 render 函数。自己写render,不用编译,性能更高。信息,生成一个对应结构的。解析器的主函数,就是它通过。当页面打开时浏览器会。,将状态全部保存起来。原创 2023-10-25 10:48:27 · 149 阅读 · 0 评论 -
js堆栈、判断数据类型、toString和valueOf区别,类型转换、不同类型间的运算、判断相等
这样的数字字面量是浮点数值,而不是整数。JavaScript 没有单独的整数类型。使用了 "SameValueZero" 比较算法,它不会对。进行特殊处理,而是按照严格的。原创 2023-10-04 21:28:31 · 572 阅读 · 0 评论 -
react缓存【类组件shouldComponentUpdate/PureComponent】【子组件React.memo】【函数组件useMemo值、useCallback函数】
它应该是一个没有任何参数的纯函数,并且可以返回任意类型。并返回最新结果,然后缓存该结果以便下次重复使用。没有发生变化,React 将直接返回相同值。缓存返回值的方式也叫做。在之后的渲染中,如果。原创 2023-10-04 16:29:57 · 165 阅读 · 0 评论 -
web安全【XSS,CSRF,SQL注入,DDOS】
根据攻击的原理可以看出,csrf通常是跨域请求(从钓鱼网站B发送请求网站A的请求),请求头上的Referer或origin字段可以判断请求的来源,如果服务器判断请求的域名不在白名单中,就拒绝对应的请求。从请求头或请求参数中添加用户的token用来验证用户,如果请求没有或token不对,就拒绝对应的请求。(凭证存在cookie中),冒充用户发送恶意请求,这些请求因为携带有用户的登录信息,会被服务器当做正常的请求处理,从而使你的个人隐私泄露或财产损失。解决:表单输入时通过正则表达式将一些特殊字符进行转换。原创 2023-10-02 23:59:42 · 264 阅读 · 0 评论 -
Vue2、3【响应式原理、API类型、生命周期、fragment】
setup() {//ref函数来创建一个响应式的数据');return {message,原创 2023-10-02 21:04:10 · 218 阅读 · 0 评论 -
前端性能优化之首屏加载【懒加载,监听元素视口可见,骨架屏优化白屏时长,长列表虚拟滚动,压缩图片,Tree shaking,base64】
懒/动态加载:按需/运动加载。原创 2023-10-02 16:49:51 · 394 阅读 · 0 评论 -
前端内存分析、优化、检测泄露
Tom 的 shallow 占了 32M,retained 占用了 56M,这是因为 retained 包括了引用的指针对应的内存大小,即。特别是现在 SPA 项目的盛行,用户在切换页面时,老页面的组件会被框架自动清理,所以我们可以放心大胆的使用闭包,无需多虑。3)选中构造函数,底部会显示对应源码文件,点击源码文件,可以跳转到具体的代码,这样我们就知道是哪里的代码造成内存过大。它们对值的引用都是不计入垃圾回收机制的,如果其他对象都不再引用该对象,那么gc 会自动回收该对象所占用的内存。原创 2023-10-02 15:55:03 · 1572 阅读 · 0 评论 -
浏览器进程,性能指标
搜集性能数据指标 做前端的。原创 2023-09-08 00:36:26 · 619 阅读 · 0 评论 -
原型、原型链、判断数据类型、Object方法和运算符
原型被定义为给其它对象提供的对象,函数的实例可以共享原型上的属性和方法。原创 2023-09-29 11:26:10 · 777 阅读 · 0 评论