javascript语言精粹在线阅读(javascript语言的作用) 小道研究 • 2024年4月17日 下午5:59 • 网站运维 经过四个月的阅读,《JavaScript 语言精髓与编程实践》,终于被我啃完了,这本书读起来很吃力。 里面用的都是专业术语,不是业内术语,可能是因为作者专业水平太高了,所以使用了标准术语。 这书留给我的整体印象,用两个字形容就是「难读」,三个字「很难读」,四个字「拮据鳌牙」。 但是这本书确实是一本好书,帮我梳理清楚非常多的概念,对于一些技术点掰开揉碎,进行深入剖析,每一点都被详细分析,分析完毕后,再提出更深层次的问题,然后继续深入,再再次提出深层次的问题,如此反复,誓要折腾明白为止,这种解决问题的方式,让我大受裨益。 感谢。 语法 JavaScript 变量声明 对于变量声明来说,要特别注意隐式声明,它会改变数据的类型和改变代码的预期结果,每个声明的变量都会创建好自己的作用域(也就是当前变量影响的范围)。 JavaScript 常见的语句类型 表达式、函数调用、变量声明、分支、循环、流程控制等语句,语句分为单行和复合语句,并且有些语句是有返回值的。其中「表达式语句」比较费解,可以通过 AI助手 等工具来辅助理解细节。 JavaScript 运算符的多重含义 了解不同的运算符,在不同的场景下,会得出什么样的结果,是一个很重要的细节考点,我们在编码中会遇到大量的不清晰、不直观的代码。而在那些代码中,存在着复杂的转换逻辑,让我们对代码的结果难以预测。 面向对象 JavaScript 函数构造器与类构造器 构造器是一种特殊的函数,通常以大写字母开头,这样可以与普通函数区分开来。ES6 中增加了 class 语法糖来声明类,其实类的本质上也是一种函数,只不过把声明方式改成了 class,这样声明的类更容易理解、更容易读,降低了学习门槛。 JavaScript 对象属性声明 声明一个对象,本质上是在声明「名字、值、可写性、可枚举性、可配置性」这几种性质。默认情况下「可写、可枚举、可配置」都为 true 值,一般情况,只需要指定 name 和 value 即可。对于数据属性来说,新声明的属性不会继承任何属性默认值,而是会初始化属性「读、写、配置」值为 true ,而访问器属性相反,会继承原型中的「读、写、配置」属性。 JavaScript 构造大型对象系统 在 JavaScript 中构造对象系统有多种方法「原型继承、类继承、直接创建对象」,各有缺点和优点。在选择继承方式上,对于大型系统,应采用基类的国民品牌,利用继承关系的确定性和稳定性,对于小型结构和局部的情况下,考虑采用原型继承的思路。 语言结构化 JavaScript 基本组织元素 编程中的语法元素「标识符、表达式、字面量、语句、模块」,都是编程语言中最基本的元素,通过不同的组合,可以写出有用、有意义的程序。 虽然语句和函数提供了足够了编程能力,但从复杂程序的角度来考虑,又推出了模块的代码组织方式,平衡了模块代码公开和细节的隐藏。 JavaScript 结构化语言的设计方向 通过形式分块来引申出 JavaScript 的代码执行顺序,通过块、文件,来确定代码的顺序关系。 ES6 约定模块代码在语法分析期处理,所以也奠定了 JS 偏向于实现「静态语义分析」的静态语言。类型推导、预编译、执行期优化等特性会有更大的实施空间。 函数式语言 JavaScript 函数式语言的特性 对于某种语言来讲一种风格很漂亮,另一种风格就很不舒服,所以对于语言来讲是没有风格标准的,不必拘于代码风格。 介绍了什么是函数式?操作数、保存数据、无副作用,完全满足这三个性质,才称的上是「函数式语言」。 函数式另一个特征是「连续运算」,一个输入,产生一个输出,输出的结果是下一个运算的输入,中间尽可能少量的存储值。 JavaScript 闭包的特性 函数是一段静态代码,而闭包是函数在运行过程中的一个「动态环境」,而我们经常说的闭包指的是:闭包的作用域和可访问性。 从闭包是如何发生的,到闭包的销毁,整个生命周期的的变化,从头到尾阐述了一遍。 动态语言 JavaScript 动态语言特性 语言包括「语法、语义、语用」三个方面。如果在语言的描述阶段无法通过静态分析来确定语法、语义和语用之间的关系,那么这门语言就是动态语言。 动态语言在执行过程中才会去解析语法、语义、语用之间的关系。 JavaScript 对象隐式类型转换 为了提高数据处理效率,JavaScript 提供了「包装类」可以将值类型数据作为对象数据,这样使得它并不像 Java 那样成为一种纯粹的面向对象语言。 在隐式转换过程中,无论期望将对象转为字符串还是数字,都会依次尝试使用 valueOf() 和 toString() 方法。 JavaScript 动态数组的内存管理 数组在存取特性上是即需即分配的动态数组,只有在向数组添加元素时才会分配相应的内存空间。 在 V8 引擎处理数组时,内部有「ElementsKind」的策略转换,它是为了减少频繁内存分配和数据迁移操作。 并发与并行 JavaScript 并发与并行的特性 并发不是并行,在并发的逻辑里是存在「时间」概念的,而并行计算是没有这个概念的。 通过任务队列和执行栈,深入理解了 RunJobs 执行过程。 历时 4 个月,6 大章节,共计整理了 14 篇文章。如果你对某些文章感兴趣,那就买书读一读,毕竟我分享的内容都经过自己思想加工了,每一次总结,每一次转述,内容都会「失真」,就像 JPEG 图片一样,每传输一次,内容都会模糊一些。 建议每个人找到「内容源头」认真地去阅读、分析。 这本书我远没有理解透彻,会作为职业生涯的「床头书」放在书架显眼的位置。 附送一张思维导图。完结撒花。题图生成:Pixabay – bishwas内容优化:ChatGPT 原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34612.html 赞 (0) 小道研究 0 0 生成海报 微信扫码分享 如何使用桌面图标专家进行个性化设置? 上一篇 2024年4月17日 下午5:58 如何搭建ftp站点? 下一篇 2024年4月17日 下午6:00 相关推荐 量子编程用什么软件 量子编程主要使用的软件有Qiskit、ProjectQ、Cirq及Microsoft的Q#:微软的量子开发套件是一个强大的工具,允许用户使用Q# 编程语言创建量子算法。该工具包还提… 网络小小 网站运维 2024年5月9日 00 网站运维 SVN服务器设置 Centos1.安装 & 测试#安装yum install subversion#测试是否安装成功,如果显示了版本信息则表示安装成功svnserve – 小su 2024年9月2日 00 网站运维 《Python 基础知识》列表列表 Python列表序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 – 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Pytho 小su 2024年9月25日 00 网站运维 4套全屋wifi无盲区组网方案:我都试过了,告诉你哪一套最好 导语前几天我看到很多人讨论在家里怎么实现全屋WiFi无死角,主要是有很多虚拟运营商在推销自己家的信号放大器,说在家里信号差就要装一个,装上之后信号好又不卡。很多 小su 2024年9月22日 00 发表回复 您的邮箱地址不会被公开。 必填项已用 * 标注*昵称: *邮箱: 网址: 记住昵称、邮箱和网址,下次评论免输入 提交