德州做网站优化背投广告典型网站
2026/5/21 0:55:30 网站建设 项目流程
德州做网站优化,背投广告典型网站,指定关键词seo报价,平面设计培训机构价位扩展运算符 vs Rest 参数#xff1a;前端新人别再傻傻分不清了#xff01;扩展运算符 vs Rest 参数#xff1a;前端新人别再傻傻分不清了#xff01;先甩一句狠话#xff1a;... 这三个点#xff0c;就是前端界的“薛定谔的猫”JavaScript 里的 ... 到底在搞什么鬼扩展运…扩展运算符 vs Rest 参数前端新人别再傻傻分不清了扩展运算符 vs Rest 参数前端新人别再傻傻分不清了先甩一句狠话... 这三个点就是前端界的“薛定谔的猫”JavaScript 里的 ... 到底在搞什么鬼扩展运算符把东西“炸开”的六脉神剑1. 数组复制——告别“引用陷阱”的绿茶2. 拼接数组——一行代码搞定“数组合并”3. 函数调用时“炸开”——代替 apply 的老寒腿4. 对象合并——“对象版乐高”Rest 参数把东西“收拢”的乾坤袋1. 写个求和函数——想传几个传几个2. 和解构搭配——“提取剩余”的骚操作3. 对象里也能 rest——“剔除敏感字段”神器4. 函数参数“收拢”之后arguments 可以退休了合并对象时的坑浅拷贝、顺序、Symbol 全给你摆明白1. 浅拷贝翻车现场2. 属性覆盖顺序实验3. Symbol 键会不会丢函数参数太多Rest 一招鲜代码立马清爽遇到 Bug 别慌排查思路来了1. 展开对象报错先查浏览器版本2. 扩展 null/undefined 会炸3. rest 放中间引擎直接掀桌子开发老鸟私藏技巧1. 一行去重Set 扩展2. 提取“除了前两个以外的所有参数”3. React 传 props——香还是坑4. 性能敏感场景慎用扩展你以为你懂了来几个反直觉的例子测测你1. 函数定义是 rest但调用时我塞了个数组2. {...obj} 和 Object.assign({}, obj) 真的一样吗3. 箭头函数里能用 rest 吗当然能但注意 this 已经挂掉了结尾再啰嗦两句扩展运算符 vs Rest 参数前端新人别再傻傻分不清了——深夜群聊语音转文字想到哪儿说到哪儿别嫌我嘴碎先甩一句狠话… 这三个点就是前端界的“薛定谔的猫”没看源码之前你以为它只是一个省略号看完源码之后你发现它一会儿是“炸开”的 TNT一会儿是“打包”的麻袋。最骚的是它俩长得一毛一样连亲妈V8都靠位置才分得清。所以今天咱们不背八股文直接撸袖子开干边骂边学学完还分不清你来成都请我吃火锅——辣到失忆算我的。JavaScript 里的 … 到底在搞什么鬼先给你一张“身份证”记住就完事儿出现在定义阶段函数签名、解构赋值左边→ Rest 参数收破烂的。出现在调用阶段函数调用、字面量右边→ 扩展运算符炸碉堡的。// 收破烂functioncollectTrash(...args){// args 是真·数组console.log(今天收的破烂,args);}// 炸碉堡consta[1,2];constb[0,...a,3];// [0,1,2,3]就这么简单。记不住那就背口诀“定义收调用炸”。再记不住那你把口诀抄屏保老板看见还以为你多爱工作。扩展运算符把东西“炸开”的六脉神剑1. 数组复制——告别“引用陷阱”的绿茶constgirls[小A,小B];constbackupGirls[...girls];// 真·克隆不是影子分身backupGirls.push(小C);console.log(girls);// [小A,小B] 原数组稳如老狗注意浅拷贝浅拷贝浅拷贝重要的事吼三遍。如果数组里套对象对象还是同一个地址改了就一起翻车。constteam[{name:张三,salary:10}];constteamCopy[...team];teamCopy[0].salary20;console.log(team[0].salary);// 20张三的工资一起涨老板哭晕2. 拼接数组——一行代码搞定“数组合并”constfront[Angular,React];constback[Nest,Express];constfullStack[...front,Docker,...back];console.log(fullStack);// [Angular,React,Docker,Nest,Express]3. 函数调用时“炸开”——代替 apply 的老寒腿constnums[3,6,1];// 老写法Math.max.apply(null,nums);// 6// 新写法Math.max(...nums);// 6语义清晰不绕弯子4. 对象合并——“对象版乐高”constcommon{url:/api,timeout:5000};constdev{url:/dev-api,debug:true};constprod{url:/prod-api,retry:3};// 后面属性会覆盖前面constconfig{...common,...dev};// dev 生效constfinal{...config,...prod};// prod 生效console.log(final);坑点播报同名属性后出现的 wins只遍历可枚举自身属性Symbol 不会丢但原型链上的拜拜依旧是浅拷贝嵌套对象请自重。Rest 参数把东西“收拢”的乾坤袋1. 写个求和函数——想传几个传几个functionsumAll(...numbers){// numbers 是真·数组能直接 pop、map、forEachreturnnumbers.reduce((a,b)ab,0);}console.log(sumAll(1,2,3));// 6console.log(sumAll());// 0空数组也不会炸2. 和解构搭配——“提取剩余”的骚操作const[host,...others][22,33,44,55];console.log(host);// 22console.log(others);// [33,44,55]3. 对象里也能 rest——“剔除敏感字段”神器constuser{pwd:123456,age:18,name:狗蛋};const{pwd,...safeUser}user;sendToClient(safeUser);// pwd 被过滤掉安全14. 函数参数“收拢”之后arguments 可以退休了functionoldWay(){console.log(arguments);// 类数组没 map 没 filter难受}newWay(...args){console.log(args);// 真数组想怎么撸怎么撸}合并对象时的坑浅拷贝、顺序、Symbol 全给你摆明白1. 浅拷贝翻车现场constsettings{theme:{color:blue}};constnewSet{...settings};newSet.theme.colorred;console.log(settings.theme.color);// red原对象被连带解决方案深拷贝请用structuredClone、lodash 克隆函数或者手写递归别把扩展运算符当万能胶。2. 属性覆盖顺序实验consta{x:1};constb{x:2};constc{...a,...b};// x:2 胜出constd{...b,...a};// x:1 胜出结论位置靠后的赢跟 CSS 优先级一个德行。3. Symbol 键会不会丢constkeySymbol(id);constobj{[key]:666,name:test};constclone{...obj};console.log(clone[key]);// 666还在放心函数参数太多Rest 一招鲜代码立马清爽业务代码经常遇到“配置一堆”的鬼需求functionlog(level,prefix,...msgs){conststrmsgs.map(i[${prefix}]${i}).join(\n);console[level](str);}log(warn,订单模块,订单001超时,订单002缺货,订单003被用户骂了);想加字段...msgs全接住后面想怎么玩怎么玩再也不用数形参个数。再说一遍rest 必须放最后否则引擎直接甩脸报错functionbad(a,...b,c){}// SyntaxErrorRest parameter must be last formal parameter遇到 Bug 别慌排查思路来了1. 展开对象报错先查浏览器版本扩展运算符进 ECMAScript 2018对象部分老 IE 肯定跑不动。生产环境报 “Unexpected token ‘…’”九成是 Webpack 没配 Babel或者 browserslist 把 IE 11 漏了。兜底写法constclonetypeofstructuredClonefunction?structuredClone(obj):JSON.parse(JSON.stringify(obj));// 糙但快2. 扩展 null/undefined 会炸constdatanull;constwrap{...data};// 不会报错只是啥也没有// 但数组展开就凉了constarr[...null];// TypeError: null is not iterable优雅兜底constsafeArr[...(data||[])];constsafeObj{...(data||{})};3. rest 放中间引擎直接掀桌子上面演示过了再写一遍加深印象functionf(a,...rest,b){}// 语法错误直接红屏开发老鸟私藏技巧1. 一行去重Set 扩展constdup[1,2,2,3];constunique[...newSet(dup)];// [1,2,3]Set 去重效率接近 O(n)短数组看不出上万条数据时真香。2. 提取“除了前两个以外的所有参数”functionformat(time,user,...args){// args 就是“其他字段”想怎么拼接怎么拼接return{time,user,comments:args};}3. React 传 props——香还是坑MyButton{...props}typeprimary/好处写起来爽坑会把所有字段都灌进去DOM 透传非标准属性会报警告。解决方案const{type,children,...rest}props;returnbutton className{type}{...rest}{children}/button;只把合法属性往下扔既优雅又不挨骂。4. 性能敏感场景慎用扩展扩展运算符每次都会生成新对象/新数组在 React 渲染、大数据列表里随手一写内存蹭蹭涨。实测 10w 条记录做...合并Chrome 性能面板直接飙红。优化思路用immer做突变草稿写完一次性不可变化或者上结构共享库immutable-js、mutative别让 GC 陪你加班。你以为你懂了来几个反直觉的例子测测你1. 函数定义是 rest但调用时我塞了个数组functionfoo(...args){console.log(args);// 二维数组}foo([1,2,3]);// 输出[[1,2,3]]解析rest 不管三七二十一把所有实参打包成数组。你传一个数组它就把这个数组当成第一个元素整包收走。2.{...obj}和Object.assign({}, obj)真的一样吗前者不会触发 setter后者会。前者无法拷贝属性访问器getter/setter后者可以。前者少一次函数调用理论上更快可忽略。consto{getx(){console.log(getter跑啦);return1;}};consta{...o};// 啥也没打印constbObject.assign({},o);// 打印getter跑啦3. 箭头函数里能用 rest 吗当然能但注意 this 已经挂掉了constarrow(...items)items.length;console.log(arrow(1,2,3));// 3箭头函数没有自己的argumentsrest 是唯一的“收拢”选择也算被迫营业。结尾再啰嗦两句别光顾着收藏动手敲十遍肌肉记忆才是你的。明天面试再被问到 “扩展和 rest 区别”你就把这篇文章背读一遍边背边比划手势左手张开——“炸开”右手握拳——“收拢”。面试官要是还听不懂你就说“来我现场写给你看。”然后甩出上面任意一段代码offer 基本稳了。好了我去撸串了键盘上都是孜然味。你啥时候彻底分清了群里吼一声我请你喝阔落。欢迎来到我的博客很高兴能够在这里和您见面希望您在这里可以感受到一份轻松愉快的氛围不仅可以获得有趣的内容和知识也可以畅所欲言、分享您的想法和见解。推荐DTcode7的博客首页。一个做过前端开发的产品经理经历过睿智产品的折磨导致脱发之后励志要翻身农奴把歌唱一边打入敌人内部一边持续提升自己为我们广大开发同胞谋福祉坚决抵制睿智产品折磨我们码农兄弟专栏系列点击解锁学习路线(点击解锁知识定位《微信小程序相关博客》持续更新中~结合微信官方原生框架、uniapp等小程序框架记录请求、封装、tabbar、UI组件的学习记录和使用技巧等《AIGC相关博客》持续更新中~AIGC、AI生产力工具的介绍例如stable diffusion这种的AI绘画工具安装、使用、技巧等总结《HTML网站开发相关》《前端基础入门三大核心之html相关博客》前端基础入门三大核心之html板块的内容入坑前端或者辅助学习的必看知识《前端基础入门三大核心之JS相关博客》前端JS是JavaScript语言在网页开发中的应用负责实现交互效果和动态内容。它与HTML和CSS并称前端三剑客共同构建用户界面。通过操作DOM元素、响应事件、发起网络请求等JS使页面能够响应用户行为实现数据动态展示和页面流畅跳转是现代Web开发的核心《前端基础入门三大核心之CSS相关博客》介绍前端开发中遇到的CSS疑问和各种奇妙的CSS语法同时收集精美的CSS效果代码用来丰富你的web网页《canvas绘图相关博客》Canvas是HTML5中用于绘制图形的元素通过JavaScript及其提供的绘图API开发者可以在网页上绘制出各种复杂的图形、动画和图像效果。Canvas提供了高度的灵活性和控制力使得前端绘图技术更加丰富和多样化《Vue实战相关博客》持续更新中~详细总结了常用UI库elementUI的使用技巧以及Vue的学习之旅《python相关博客》持续更新中~Python简洁易学的编程语言强大到足以应对各种应用场景是编程新手的理想选择也是专业人士的得力工具《sql数据库相关博客》持续更新中~SQL数据库高效管理数据的利器学会SQL轻松驾驭结构化数据解锁数据分析与挖掘的无限可能《算法系列相关博客》持续更新中~算法与数据结构学习总结通过JS来编写处理复杂有趣的算法问题提升你的技术思维《IT信息技术相关博客》持续更新中~作为信息化人员所需要掌握的底层技术涉及软件开发、网络建设、系统维护等领域的知识《信息化人员基础技能知识相关博客》无论你是开发、产品、实施、经理只要是从事信息化相关行业的人员都应该掌握这些信息化的基础知识可以不精通但是一定要了解避免日常工作中贻笑大方《信息化技能面试宝典相关博客》涉及信息化相关工作基础知识和面试技巧提升自我能力与面试通过率扩展知识面《前端开发习惯与小技巧相关博客》持续更新中~罗列常用的开发工具使用技巧,如 Vscode快捷键操作、Git、CMD、游览器控制台等《photoshop相关博客》持续更新中~基础的PS学习记录含括PPI与DPI、物理像素dp、逻辑像素dip、矢量图和位图以及帧动画等的学习总结日常开发办公生产【实用工具】分享相关博客》持续更新中~分享介绍各种开发中、工作中、个人生产以及学习上的工具丰富阅历给大家提供处理事情的更多角度学习了解更多的便利工具如Fiddler抓包、办公快捷键、虚拟机VMware等工具吾辈才疏学浅摹写之作恐有瑕疵。望诸君海涵赐教。望轻喷嘤嘤嘤非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。愿斯文对汝有所裨益纵其简陋未及渊博亦足以略尽绵薄之力。倘若尚存阙漏敬请不吝斧正俾便精进

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询