小白前端别慌:搞懂JS内置可迭代对象,写代码不再手抖(附实战技


小白前端别慌:搞懂JS内置可迭代对象,写代码不再手抖(附实战技

  • 小白前端别慌:搞懂JS内置可迭代对象,写代码不再手抖(附实战技巧)
    • 为啥for...of一用就报错?——先别骂浏览器,它真没针对你
    • 其实你天天都在用可迭代对象,只是自己不知道
    • 啥是可迭代协议?说人话就是“能被for...of遍历的家伙”
    • Array、String、Map、Set这些老熟人,原来都偷偷实现了[Symbol.iterator]
    • arguments和NodeList:看着像数组,其实是个“伪君子”,但也能迭代!
    • TypedArray、Generator这些高阶玩家也混在可迭代圈子里
    • 可迭代 ≠ 可索引!别再拿length当万能钥匙了
    • 想让自己的对象也能被for...of?三行代码搞定
    • 浏览器控制台里随手试:Object.keys() 和 for...in 的坑你踩过没?
    • 性能党注意:展开运算符(...)背后其实是调用了迭代器
    • 遇到“xxx is not iterable”别懵,先看它有没有Symbol.iterator属性
    • 自定义迭代器时别乱return,done和value要配对出现
    • 别把迭代器和生成器搞混了,一个负责“怎么走”,一个负责“边走边造”
    • 用解构赋值拆可迭代对象时,小心无限迭代把自己卡死
    • 实战场景:批量处理DOM节点、合并多个数据源、懒加载列表
      • 1. 批量改DOM
      • 2. 合并多个接口数据
      • 3. 懒加载长列表(虚拟滚动)
    • 调试小妙招:console.log([...yourObj]) 快速看能不能展开
    • 别信网上那些“所有对象都能迭代”的鬼话,普通对象就是不行!
    • 想玩高级的?试试用yield*委托另一个可迭代对象
    • 团队协作时,别偷偷给Object.prototype加iterator,会炸的!
    • 下次同事问“这玩意能for...of吗?”,你可以装作很懂地点点头

小白前端别慌:搞懂JS内置可迭代对象,写代码不再手抖(附实战技巧)

友情提示:本文全程碎碎念,代码比字多,建议收藏后慢慢啃,别在地铁里看,容易坐过站。


为啥for…of一用就报错?——先别骂浏览器,它真没针对你

昨晚十一点,我刚把奶茶放到键盘旁边,准备用for...of循环秀一波优雅,结果控制台啪地甩我一句:

Uncaught TypeError: xxx is not iterable

我当时差点把奶茶喷屏幕上。冷静下来一看,原来我把一个普通对象扔进了for...of,浏览器表示:臣妾做不到啊!

这就好比你跟老板说“我要把公司股权for...of一下”,老板只能送你一句“出门右转劳动局”。

所以,先搞清楚谁才有资格被for...of宠幸,后面才不会天天踩坑。


其实你天天都在用可迭代对象,只是自己不知道

别不信,你现在打开控制台,随手写:

constarr=[1,2,3];for(constvofarr)console.log(v);

这段代码能跑,是因为数组天生自带Symbol.iterator
换句话说,数组出生那天就拿到了“可被for...of”的绿卡,而你自己写的对象,大概率还是黑户。


啥是可迭代协议?说人话就是“能被for…of遍历的家伙”

官方文档写得像天书,我给你翻译成人话:

可迭代协议 = 一个对象,它身上有个**Symbol.iterator**的钥匙,浏览器拿这把钥匙就能打开for...of的大门。

钥匙长啥样?来,上代码:

// 最低配版“可迭代对象”constmyIterable={[Symbol.iterator](){leti=0;return{next(){if(i<3){return{value:i++,done:false};}return{value:undefined,done:true};}};}};// 试试能不能for...offor(constvofmyIterable){console.log(v);// 0 1 2}

看懂没?

  • Symbol.iterator必须是个函数,调用后返回一个迭代器对象
  • 迭代器对象必须带next()方法,每次调用返回{value, done}
  • done: true表示“老板,没货了”。

Array、String、Map、Set这些老熟人,原来都偷偷实现了[Symbol.iterator]

你以为你在写业务,其实你在天天蹭内置迭代器。

// 1. 数组[...['a','b','c']];// ['a', 'b', 'c']// 2. 字符串[...'kimi'];// ['k', 'i', 'm', 'i']// 3. Mapconstmap=newMap([['key1','val1'],['key2','val2']]);for(const[k,v]ofmap)console.log(k,v);// 4. Setconstset=newSet([1,2,3,3,3]);console.log([...set]);// [1, 2, 3] 自动去重,爽不爽?

想看它们到底怎么实现的?把原型扒出来:

console.log(Array.prototype[Symbol.iterator]);// ƒ values()console.log(String.prototype[Symbol.iterator]);// ƒ [Symbol.iterator]()console.log(Map.prototype[Symbol.iterator]);// ƒ entries()console.log(Set.prototype[Symbol.iterator]);// ƒ values()

看到没,人家早就写好了,你只是调用方,别再把功劳归给自己“代码感”好。


arguments和NodeList:看着像数组,其实是个“伪君子”,但也能迭代!

arguments长得一副“我是数组”的脸,其实原型链上根本没Array.prototype,所以pushpop全都没有。
但好消息:它实现了迭代器,所以for...of照样能跑:

functiondemo(){for(constargofarguments)console.log(arg);}demo(1,2,3);// 1 2 3

NodeList也一样:

// 假设页面有仨<p>constps=document.querySelectorAll('p');for(constpofps)p.style.color='tomato';

如果你想“真数组”一把,请用Array.from或者[...]

constrealArr=Array.from(arguments);// 真·数组,push pop随便玩

TypedArray、Generator这些高阶玩家也混在可迭代圈子里

TypedArray家族(Int8ArrayUint16Array…)也是内置迭代器:

constu8=newUint8Array([255,0,128]);for(constbyteofu8)console.log(byte);

Generator函数更骚,返回的生成器对象本身就是迭代器,所以也能for...of

function*gen(){yield10;yield20;yield30;}for(constvofgen())console.log(v);// 10 20 30

可迭代 ≠ 可索引!别再拿length当万能钥匙了

很多后端转前端的小伙伴,习惯用for (let i = 0; i < obj.length; i++)走天下。
可迭代可索引是两码事:

  • 可索引:有length、能用obj[i],比如数组、字符串。
  • 可迭代:有Symbol.iterator,比如MapSet,它们压根没length

所以,看到Map别傻乎乎写:

constmap=newMap([['a',1],['b',2]]);console.log(map.length);// undefined

正确姿势:

console.log(map.size);// 2for(const[k,v]ofmap){/* ... */}

想让自己的对象也能被for…of?三行代码搞定

来,给你一张“绿卡”模板,复制即用:

constmyCollection={data:['html','css','js'],*[Symbol.iterator](){for(constitemofthis.data)yielditem;}};// 试试for(consttechofmyCollection)console.log(tech);

三行:[Symbol.iterator]+ yield,完事。
如果你连yield*都没兴趣记,那就直接 delegating:

[Symbol.iterator](){returnthis.data[Symbol.iterator]();// 直接甩锅给数组}

浏览器控制台里随手试:Object.keys() 和 for…in 的坑你踩过没?

普通对象不能for...of,但你可以曲线救国:

constobj={foo:1,bar:2};// 1. 只想要值for(constvofObject.values(obj))console.log(v);// 2. 想要键值对for(const[k,v]ofObject.entries(obj))console.log(k,v);

注意,for...in会把原型链可枚举属性也拖出来:

Object.prototype.parent='oops';for(constkinobj)console.log(k);// foo bar parent

所以团队规范里,for...in必须配合hasOwnProperty,否则哪天谁给原型加了属性,你就等着加班吧。


性能党注意:展开运算符(…)背后其实是调用了迭代器

[...arr]看着很甜,复杂度O(n),别在百万级数据上乱撒糖:

constbig=newArray(1e6).fill(0);constcopy=[...big];// 内存瞬间翻倍

真·大文件流式处理,请用generator+for...of逐条消费,而不是一口气展开。


遇到“xxx is not iterable”别懵,先看它有没有Symbol.iterator属性

调试口诀:

  1. 控制台输入:yourObj[Symbol.iterator]
  2. 如果输出undefined→ 黑户,赶紧给绿卡(上文的模板)。
  3. 如果输出function→ 合法公民,再检查是不是调用方式错了。

自定义迭代器时别乱return,done和value要配对出现

手写迭代器最容易翻车的是:提前return却忘了done: truefor...of会以为你还有货,继续调用next(),结果valueundefined,逻辑直接崩。

// 错误示范next(){if(this.i<this.data.length){return{value:this.data[this.i++]};}// 漏了return { done: true }}

正确:

next(){if(this.i<this.data.length){return{value:this.data[this.i++],done:false};}return{done:true};// value可省略,默认undefined}

别把迭代器和生成器搞混了,一个负责“怎么走”,一个负责“边走边造”

  • 迭代器:任何一个对象,只要有next()方法,返回{value, done},就叫迭代器。
  • 生成器:函数写个*,调用后返回的生成器对象既是迭代器,又能yield值。

一句话:生成器是迭代器的亲儿子,但迭代器不一定是生成器。


用解构赋值拆可迭代对象时,小心无限迭代把自己卡死

const[a,b,c]=infiniteGen();// 无限yield,直接卡死浏览器

真要对无限序列解构,请只拿前面几个:

const[first,second]=take(infiniteGen(),2);// take自己实现

实战场景:批量处理DOM节点、合并多个数据源、懒加载列表

1. 批量改DOM

function*walkDom(el){yieldel;for(constchildofel.children)yield*walkDom(child);}for(constnodeofwalkDom(document.body)){if(node.tagName==='IMG')node.loading='lazy';}

2. 合并多个接口数据

asyncfunction*mergeRequests(urls){for(consturlofurls){constdata=awaitfetch(url).then(r=>r.json());yield*data;// 把每条记录逐个吐出来}}// 使用forawait(constitemofmergeRequests(['/api/a','/api/b'])){console.log(item);}

3. 懒加载长列表(虚拟滚动)

function*chunkGen(list,size){for(leti=0;i<list.length;i+=size)yieldlist.slice(i,i+size);}constrows=newArray(10000).fill(0).map((_,i)=>`Row-${i}`);for(constchunkofchunkGen(rows,100)){render(chunk);// 每次只渲染100条awaitwaitScrollBottom();// 伪代码:等用户滑到底}

调试小妙招:console.log([…yourObj]) 快速看能不能展开

百试百灵:

console.log([...maybeIterable]);// 如果这里没报错,基本稳了

别信网上那些“所有对象都能迭代”的鬼话,普通对象就是不行!

再强调一次:
普通对象没有Symbol.iterator,不能for...of,不能[...obj]
除非你自己给它盖绿卡,否则天王老子来了也不行。


想玩高级的?试试用yield*委托另一个可迭代对象

function*a(){yield1;yield2;}function*b(){yield0;yield*a();// 把a的货全部接过来yield3;}console.log([...b()]);// [0, 1, 2, 3]

这招在树形结构里递归贼好用,代码比你手写栈清爽一百倍。


团队协作时,别偷偷给Object.prototype加iterator,会炸的!

Object.prototype[Symbol.iterator]=function*(){for(constkofObject.keys(this))yieldthis[k];};

看似方便,全局污染,第三方库直接哭给你看。
真想公用,请封装工具函数,或者给单独的配置对象加,别动原型。


下次同事问“这玩意能for…of吗?”,你可以装作很懂地点点头

先默念三句:

  1. 有没有Symbol.iterator
  2. 有?稳。
  3. 没有?盖绿卡或者Object.keys()走曲线。

然后淡淡地回他:“先拿...展开试试,报错就补迭代器,五分钟的事。”
逼格瞬间+50,今晚的奶茶有人请了。


写到这儿,我键盘上的奶茶渍已经凝固了,但你看完要是还敢把普通对象塞进for...of,我就……继续给你写第二篇。

欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

推荐: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等工具

吾辈才疏学浅,摹写之作,恐有瑕疵。望诸君海涵赐教。望轻喷,嘤嘤嘤

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。愿斯文对汝有所裨益,纵其简陋未及渊博,亦足以略尽绵薄之力。倘若尚存阙漏,敬请不吝斧正,俾便精进!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1159608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机深度学习毕设实战-基于python深度学习的拉链是否完好识别基于python深度学习的拉链是否完好识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【毕业设计】基于深度学习识别水面漂浮垃圾基于python-CNN深度学习识别水面漂浮垃圾

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

黑客自学指南:零基础入门网络安全,一篇直接通关

网络安全&#xff08;黑客&#xff09;自学篇&#xff0c;一文带你从零基础入门到精通&#xff01; 第一阶段&#xff1a;基础操作入门&#xff0c;学习基础知识 入门的第一步是学习一些当下主流的安全工具课程并配套基础原理的书籍&#xff0c;一般来说这个过程在1个月左右比…

数字永生安全:意识上载后的网络安全挑战

数字永生安全&#xff1a;意识上载后的网络安全挑战引言&#xff1a;数字化永生的技术愿景与安全困境随着脑机接口、神经映射和人工智能技术的飞速发展&#xff0c;“数字永生”已从科幻概念逐渐走向技术讨论的前沿。这一概念的核心在于将人类意识、记忆和人格特征从生物大脑中…

深度学习计算机毕设之基于python-CNN深度学习卷神经网络识别水面漂浮垃圾基于python-CNN深度学习识别水面漂浮垃圾

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

大模型入门到精通:2025中国行业发展报告,程序员必读指南

中国大模型行业2024年市场规模达294.16亿元&#xff0c;预计2026年将突破700亿元。行业竞争已从单点技术对决转向多维度体系化较量&#xff0c;形成CBDG四维生态&#xff08;消费者、企业、设备、政府&#xff09;。技术演进方向包括多模态融合、智能体化和具身智能。未来&…

2026最热AI技能:大模型开发学习指南,收藏不亏!

文章介绍AI大模型开发的高薪前景&#xff0c;鼓励程序员学习大模型、RAG、Prompt等技术提升竞争力。作者整理了包含4大模块的学习路线&#xff0c;帮助读者快速入门&#xff0c;把握AI机遇实现薪资跃迁&#xff0c;可通过微信免费获取完整学习资料。 AI 现在简直杀疯了&#xf…

2026年最全AI产品经理与大模型学习指南,附90天实战路径,2026年AI产品经理终极学习路线

文章详述AI产品经理学习路线&#xff0c;涵盖基础知识、AI技术、产品管理等核心技能。重点介绍大模型AI四阶段学习路径&#xff1a;初阶应用、高阶应用、模型训练和商业闭环。强调AI技术带来的竞争优势&#xff0c;提供免费学习资源&#xff08;思维导图、教程、实战项目&#…

深度学习毕设项目:基于python深度学习识别水面漂浮垃圾基于python-CNN深度学习识别水面漂浮垃圾

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Java实习模拟面试|蔚来汽车后台开发一面面经深度复盘:大文件导出防OOM、TTL线程池上下文传递、Spring AOP失效陷阱与二叉树路径和深度解析(全面优化版)

Java实习模拟面试&#xff5c;蔚来汽车后台开发一面面经深度复盘&#xff1a;大文件导出防OOM、TTL线程池上下文传递、Spring AOP失效陷阱与二叉树路径和深度解析&#xff08;全面优化版&#xff09;关键词&#xff1a;蔚来后台开发&#xff5c;大文件导出&#xff5c;TTL线程池…

从能跑到能用:大模型智能体技术演进与工程化实践

文章介绍了大模型智能体技术的演进历程&#xff0c;从LangChain的基础设施作用&#xff0c;到LangGraph引入状态管理实现稳定执行&#xff0c;再到Deep Agents提升任务成功率和自主性。三者分别让智能体"能动"、“稳定"和"聪明”&#xff0c;共同推动了从&…

【课程设计/毕业设计】基于python-AI深度学习训练识别草莓是否腐烂基于python-AI训练识别草莓是否腐烂

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

程序员必学!dbt+DataOps+StarRocks如何打造高效数据治理与实时分析体系

本文详细介绍了dbt、DataOps和StarRocks如何构建"三合一"数据体系&#xff0c;实现数据建模自动化、版本控制、血缘分析及质量测试。通过ELT框架重构传统ETL架构&#xff0c;结合Agile模式缩短交付周期&#xff0c;确保数据准确性&#xff0c;为企业提供高效数据治理…

收藏!AI大模型三大核心组件深度解析:从基础到实战,小白也能懂的MCP Server/Function Call/Agent指南

本文专为AI大模型入门开发者与程序员打造&#xff0c;深度拆解大模型应用落地的三大核心支柱&#xff1a;MCP Server&#xff08;被动式能力工具箱&#xff0c;提供标准化数据接口&#xff09;、Function Call&#xff08;轻量型功能扩展瑞士军刀&#xff09;、Agent&#xff0…

電子郵件簽名攻擊:隱匿於信任之中的數位毒藥——深度剖析圖檔嵌入惡意代碼的手法與防禦

電子郵件簽名攻擊&#xff1a;隱匿於信任之中的數位毒藥——深度剖析圖檔嵌入惡意代碼的手法與防禦摘要 在當代網路安全威脅格局中&#xff0c;社交工程攻擊已成為突破防線最鋒利的矛。其中&#xff0c;電子郵件作為企業與個人最核心的通信工具&#xff0c;始終是攻擊者的首要目…

Notion MCP + Claude Code 完美结合教程 - 让大模型自动管理你的知识库

本文详细介绍了如何配置 Notion MCP 与 Claude Code 的结合使用&#xff0c;实现 Notion 工作区的自动化交互。内容包括获取 Notion API 密钥、安装配置 notion mcp、验证连接等步骤&#xff0c;以及将工作内容整理到 Notion、整理实验结果到多维表格等应用场景。作者还分享了 …

深度学习毕设项目:基于python-AI训练识别草莓是否腐烂基于python-AI深度学习训练识别草莓是否腐烂

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

智能体推理技术全解析:从CoT到多智能体系统,提升大模型思考能力的终极指南

本文详细探讨了智能体的核心推理能力及其实现技术&#xff0c;包括思维链(CoT)、思维树(ToT)、自我纠正等方法&#xff0c;展示了如何通过增加计算投入提升模型性能。文章还介绍了程序辅助语言模型(PALM)、ReAct框架以及多智能体协作系统等先进技术&#xff0c;并阐述了缩放推理…

挖礦病毒清理終極指南:徹底解救你的CPU與GPU

挖礦病毒清理終極指南&#xff1a;徹底解救你的CPU與GPU 引言&#xff1a;當你的電腦「為他人做嫁衣」 清晨&#xff0c;你打開電腦準備開始一天的工作&#xff0c;卻發現風扇瘋狂運轉&#xff0c;機箱發燙&#xff0c;系統卡頓到連移動滑鼠都困難。打開工作管理員一看&#…

小白如何高效入门AI大模型:一位程序员的半年转行经验与书单全攻略

本文分享了一位程序员转行AI/大模型领域的半年经验。作者从Python和数学基础出发&#xff0c;系统学习数据结构与算法、机器学习、深度学习及大模型相关知识&#xff0c;结合报班指导&#xff0c;最终成功获得AI工作。文章强调转行需私人订制&#xff0c;推荐详细书单&#xff…