JavaScript高级程序设计(第5版):扎实的基本功是唯一捷径
每个系列一本前端好书,帮你轻松学重点。
本系列来自曾供职于Google的知名前端技术专家马特·弗里斯比编写的 《JavaScript高级程序设计》(第5版)
不论从事什么,真正的高手都是把基本功练到炉火纯青的人,只有熟悉每个细节,熟练每个动作,才能在情况多变的实战中如肌肉记忆般灵活应对,从容不迫。
学习JavaScript的最佳书籍是什么,不论十年前还是现在,都会得到一个答案 —《JavaScript高级程序设计》(红宝书)。
尽管技术在不断换代,“红宝书”仍以其全面性、权威性成为难以替代的经典。本系列文章的目标,就是借助这样一本书的最新版,帮大家打破知识壁垒,夯实基本功。
它的全面性体现在,不仅介绍了JavaScript语言的发展背景和基本概念,还讲解了面向对象编程、迭代器、Promise、Canvas、客户端存储等现代Web开发不可缺少的知识点。在系统性的同时兼顾了精简,并融入作者多年一线开发经验。
所以,它不单是一本知识讲解书,也是一本编程指导书。
编程在干什么
对于非开发人员来说,看代码无异于看“天书”,不少想入行的人会因此打退堂鼓。
每个人都存在过这样的疑问:编程学了能干什么?那些字母、符号和我要做的事有什么关联?
实不相瞒,笔者没有编程天赋,大学计算机专业学渣,工作前几年做的也不是真正意义的编程,切实体会过从不知所措到逐渐开窍的过程。
分享两个关键点:载体、信息。
任何一门编程语言都不能凭空变魔术,需要依附于某种载体才能发挥作用。
你不要想着怎么用程序把人从一个地方送到另一个地方,你要做的是拿起手机打车。
JavaScript的载体是浏览器,我们编写的代码都要运行在浏览器中,这就解答了“用在哪”。
下一个问题是“怎么做”,程序是用来控制机器的,而不是人,所以,落脚点还在载体。
编程,就是把现实需求和载体建立联系,用来建立联系的是”信息“。
假设需要处理的信息是”一个班级的学生“:
你想记录人的名字,需要一个变量(name),你想拿到某个人的资料,需要一个对象(person),你想把所有人存储在一起,需要一个列表/数组(personList),你想把前十个分到一组,后面的分到另一组,需要进行条件判断(if逻辑)
编程语言就像一个工具箱,把想法用“工具”组合呈现出来就是在编程。
你精通JavaScript吗?
“精通”本是褒义词,现在成了敏感词,不论是工作三年五年,还是十年八年,只要敢在简历中写“精通”二字,就等着被出难题,不过略尴尬的是,有能力出难题的面试官也很少,面试官也是普通人,有强项,有薄弱,很多知识点研究也不深。
既然没多少人精通,还应不应该追求精通?当然应该。
精通有哪些好处,最直接的:
- 遇到需求有方案
- 碰到问题有答案
这里又提到两个点:需求、问题。
如果单纯追求理论,把这本书背下来够吗?说不够怕你打我,但确实不够。一来,JavaScript的细节丰富程度远非一本书能涵盖;二来,知识永远要和应用结合才有价值,才能发现它适合的场景以及优缺点,最终沉淀为经验。
从这个角度看,“精通”不是一个指日可待的目标,而是一种不断精进的状态。
JavaScript的实现
全书共25章,看起来很多,但没有一章是多余的,而且相较于第4版(28章)做了适当地删减与合并,如”DOM2和DOM3、XML、客户端检测“不再作为单独的章节,同时新增了ES2020-2024中新的语言特性,表明了它在与时俱进。
我们从整体上看看JavaScript到底实现了哪些东西。
先聊聊ECMAScript,你会看到JavaScript,也会看到ECMAScript,这两者常被混用,实则有差异。
ECMAScript是指ECMAScript-262标准,主要描述一门语言的语法、语句、关键字,它不局限于浏览器,浏览器只是其中一个运行环境,它还能应用在Node.js、嵌入式系统等。
我们常说的ES6,就是ECMAScript-262的第6版,这一版是自ES5发布时隔6年后的一次大更新,很多新特性均来自它,如:类、箭头函数、Promise,从ES6之后,就开始以年为单位进行版本更新,如:ES2017、ES2018等,本书包含了最新的ES2024版内容。
前面说JavaScript的载体是浏览器,那么语言就要具备跟浏览器交互的能力,成为用户与应用交互的桥梁,这个能力由DOM和BOM提供。
DOM:Document Object Model,文档对象模型,它分管文档。什么是文档,你打开的每个网页,都是一个HTML文档,就好比用WPS打开Word文档一样。
应用:获取页面中某个元素,改变其内容,或者绑定事件以响应用户操作等。
BOM:Browser Object Model,浏览器对象模型,用于支持访问浏览器窗口。
应用:弹出新窗口,获取浏览器类型,获取访问URL等。
综上,JavaScript的实现,就是ECMAScript的语言能力,结合DOM的文档处理能力,再加上BOM的窗口交互能力,一切皆有此生。
小结
本系列文章,会把这本经典书籍的精华部分一网打尽,同时分享如何构建编程思维。
人常有一种观念,能力强者都有诀窍,技术高手都靠天赋。其实不然,优秀离不开几个因素:打好基础、反复练习、多做总结。
如果你发现有些东西你不懂而别人懂,多半因为基础没打牢,基本功的反复练习是自我提升性价比最高的方式。
这一次,跟我一起,拿下它!
更多好文第一时间接收,可关注公众号:前端说书匠