javascript语言精粹在线阅读(javascript语言的作用)

经过四个月的阅读,《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)
小道研究's avatar小道研究
上一篇 2024年4月17日 下午5:58
下一篇 2024年4月17日 下午6:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注