day04 JavaScript高级程序设计 阅读总结
《JavaScript高级程序设计》(第四版)阅读总结
额,据说这本是前端er必看书籍,花了20个小时简单把这本书过了一下,目前暂时很少用到的东西我这一遍就没有过了,等以后要用的时候再回来继续学了。
先来谈谈这本书的缺点,书籍前面章节用到了一些后面才讲到的东西,比如第三章讲symbol对象时,就用到了后面才讲的iterator和generator。然后就是感觉讲的有点太广了,而且基本没有课后习题,看过就是看过了,顶多自己花时间把书里面的例子都敲一遍。所以我建议应该和现代JavaScript教程一起食用。
反过来,全也是它的优点,当做工具书看看也不错,梳理书中的内容,查漏补缺,构建自己的知识体系。
1. 什么是JavaScript
1.1 简短的历史回顾
JavaScript包括以下几个部分:核心(ECMAScript)、文档对象模型(DOM)、浏览器对象模型(BOM)。
1.2.1 ECMAScript
ECMAScript,即ECMA-262定义的语言,并不局限于Web浏览器。
1.2.2 DOM
文档对象模型(DOM, Document Object Model)是一个应用编程接口(API),用于在HTML中使用扩展的XML。
1.2.3 BOM
IE3和Netscape Navigator 3提供了浏览器对象模型(BOM)API,用于支持访问和操作浏览器的窗口。使用BOM,开发者可以操控浏览器显示页面之外的部分。而BOM真正独一无二的地方,当然也是问题最多的地方,就是它是唯一一个没有相关标准的JavaScript实现。HTML5改变了这个局面,这个版本的HTML以正式规范的形式涵盖了尽可能多的BOM特性。由于HTML5的出现,之前很多与BOM有关的问题都迎刃而解了。
2. HTML中的JavaScript
这章没有啥值得做笔记的,就略过了。
3. 语言基础
ECMA-262第5版(ES5)定义的ECMAScript,是目前为止实现得最为广泛(即受浏览器支持最好)的一个版本。第6版(ES6)在浏览器中的实现(即受支持)程度次之。到2017年底,大多数主流浏览器几乎或全部实现了这一版的规范。为此,本章接下来的内容主要基于ECMAScript第6版。
3.3 变量
3.3.4 声明风格及最佳实践
ECMAScript 6增加let和const从客观上为这门语言更精确地声明作用域和语义提供了更好的支持。行为怪异的var所造成的各种问题,已经让JavaScript社区为之苦恼了很多年。随着这两个新关键字的出现,新的有助于提升代码质量的最佳实践也逐渐显现。
- 不使用var有了let和const,大多数开发者会发现自己不再需要var了。限制自己只使用let和const有助于提升代码质量,因为变量有了明确的作用域、声明位置,以及不变的值。
- const优先,let次之使用const声明可以让浏览器运行时强制保持变量不变,也可以让静态代码分析工具提前发现不合法的赋值操作。因此,很多开发者认为应该优先使用const来声明变量,只在提前知道未来会有修改时,再使用let。这样可以让开发者更有信心地推断某些变量的值永远不会变,同时也能迅速发现因意外赋值导致的非预期行为。
3.4 数据类型
注意 即使未初始化的变量会被自动赋予undefined值,但我们仍然建议在声明变量的同时进行初始化。这样,当typeof返回"undefined"时,你就会知道那是因为给定的变量尚未声明,而不是声明了但未初始化。
Symbol类型看个大概就可以,然后直接跳,等后面学完有一定基础再回来看。
3.5 操作符
3.5.2 位操作符(重点理解)
4. 变量、作用域与内存
4.3 垃圾回收
4.3.1 标记清理
4.3.2 引用计数
第5章 基本引用类型
5.2 RegExp
5.2.1 RegExp实例属性
❑ global:布尔值,表示是否设置了g标记。
❑ ignoreCase:布尔值,表示是否设置了i标记。
❑ unicode:布尔值,表示是否设置了u标记。
❑ sticky:布尔值,表示是否设置了y标记。
❑ lastIndex:整数,表示在源字符串中下一次搜索的开始位置,始终从0开始。
❑ multiline:布尔值,表示是否设置了m标记。
❑ dotAll:布尔值,表示是否设置了s标记。
❑ source:正则表达式的字面量字符串(不是传给构造函数的模式字符串),没有开头和结尾的斜杠。
❑ flags:正则表达式的标记字符串。始终以字面量而非传入构造函数的字符串模式形式返回(没有前后斜杠)。
第6章 集合引用类型
6.2.5 迭代器方法
在ES6中,Array的原型上暴露了3个用于检索数组内容的方法:keys()、values()和entries()。keys()返回数组索引的迭代器,values()返回数组元素的迭代器,而entries()返回索引/值对的迭代器:
6.3 定型数组(未学)
定型数组在学习过程中暂时没有见过,感觉有点难懂,等以后需要再回来重新学习。
6.4 Map(映射)
6.4.3 选择Object还是Map
涉及大量增删改查使用Map
6.6 Set(集合)
第7章 迭代器与生成器
第8章 对象、类与面向对象编程
第9章 代理与反射
感觉有点难,以后有需要再回来学习。
const proxy = new Proxy(target, handler)
第10章 函数
10.1 箭头函数
10.3 理解参数
ECMAScript函数的参数只是为了方便才写出来的,并不是必须写出来的。
10.4 没有重载
后定义的函数会覆盖之前定义的函数。
把函数名当成指针也有助于理解为什么ECMAScript没有函数重载。
10.5 默认参数值
10.7 函数声明与函数表达式
因为函数声明会在任何代码执行之前先被读取并添加到执行上下文。这个过程叫作函数声明提升(function declaration hoisting)。在执行代码时,JavaScript引擎会先执行一遍扫描,把发现的函数声明提升到源代码树的顶部。因此即使函数定义出现在调用它们的代码之后,引擎也会把函数声明提升到顶部。如果把前面代码中的函数声明改为等价的函数表达式,那么执行的时候就会出错:
10.9 函数内部
看到这里我是真的想骂人了,前面iterator和generator没讲的时候Symbol就一直用,现在arguments直到第十章才讲,前面也一直用,就不懂搞个引导说后面哪里讲了吗?阅读体验真的差。
10.11 函数表达式
任何时候,只要函数被当作值来使用,它就是一个函数表达式。
第11章 期约与异步函数
第一遍跳,看不懂,实在是太菜了啊!!!
第12章 BOM
day04 JavaScript高级程序设计 阅读总结相关推荐
- JavaScript高级程序设计阅读笔记
2020-11-15 通过初始化指定变量类型 数字-1 对象null 和null的比较(不理解) 使用局部变量将属性查找替换为值查找(算法复杂度) 循环的减值迭代,降低了计算终止条件的复杂度 swit ...
- javascript高级程序设计阅读收获(1.1)——javascript简短的历史回顾
1995年,网景公司(网景公司英文名为Netscape Communications Corporation)中的Brendan Eich工程师,为即将发布的Netscape Navigator 2( ...
- javascript高级程序设计阅读收获(5.4.2)——Math
1.Math ECMAScript提供了Math对象作为保存数学公式.信息和计算的方法.Math对象提供了一些辅助计算的属性和方法. Math对象上提供的计算要比直接在JavaScript实现快得多, ...
- 《JavaScript高级程序设计》红宝书第二遍阅读(动手实践)
<JavaScript高级程序设计>红宝书第二遍阅读(动手实践) 第1章--什么是JavaScript 第2章--HTML中的JavaScript 第3章--语言基础 第4章--变量.作用 ...
- 《JavaScript高级程序设计》红宝书第一遍阅读(了解概念)
<JavaScript高级程序设计>红宝书第一遍阅读(了解概念) 第1章--什么是JavaScript 第2章--HTML中的JavaScript 第3章--语言基础 第4章--变量.作用 ...
- 一行python代码画粑粑_如何阅读《JavaScript高级程序设计》(一)
题外话 最近在看<JavaScript高级程序设计>这本书,面对着700多页的厚书籍,心里有点压力,所以我决定梳理一下..探究一下到底怎么读这本书.本书的内容好像只有到ES5...所以只能 ...
- 《JavaScript高级程序设计(第3版)》教程大纲
词条 <JavaScript高级程序设计>是2006年人民邮电出版社出版的图书,作者是(美)(Nicholas C.Zakas)扎卡斯.本书适合有一定编程经验的开发人员阅读,也可作为高校相 ...
- 前端红宝书《JavaScript高级程序设计》核心知识总结
此文是对<JavaScript 高级程序设计>一书难点的总结,也是笔者在看了 3 遍之后的一些梳理和感想,希望能借此巩固js的基础和对一些核心概念有更深入的了解. 摘要 JS基本的数据类型 ...
- 《JavaScript高级程序设计》(第2版)上市
本书是技术畅销书<JavaScript高级程序设计> 的第2版,几乎全部更新.重写 了上一版的内容,融入了作者近几年来奋战在前端开发一线的宝贵经验 , 是学习和提高JavaScript ...
- javascript高级程序设计pdf_一个老牌程序员推荐的JavaScript的书籍,看了真的不后悔!...
很多人问我怎么学前端?我的回答是:读书吧!相对于在网上学习,在项目中学习和跟着有经验的同事学习,书中有着相对完整的知识体系,每读一本好书都会带来一次全面的提高.而如果深一脚浅一脚的学习,写出代码的质量 ...
最新文章
- Android调用远程Service的参数和返回值都需要实现Parcelable接口
- python dataframe列数值相加,python合并dataframe中的行并将值相加
- JS-获取class类名为某个的元素-【getClass】函数封装
- linux mmap 内存映射【转】
- 初识数据流 bit byte char三者的区别 java
- android沿曲线移动,Android动画学习Demo(3) 沿着贝塞尔曲线移动的Property Animation
- Grafana教程(prometheus 基本查询语法,alerting报警)
- 联想昭阳k29轴拆机步骤图_【tableau入门教程23】雷达图
- c语言全局钩子,如何实现键盘钩子(文章)?
- labview 游戏 打地鼠
- docker部署redis集群
- AndroidStudio报错 AAPT: error: resource xxx (aka com.example.ouchaixun:drawable/back) not found
- 超参数的选择与交叉验证
- 台式电脑打开计算机很慢,台式电脑慢怎么处理_台式电脑很慢很卡的解决方法-系统城...
- 【Ubuntu】reids客户端(GUI) Medis编译打包
- 用Python写个超级小恐龙跑酷游戏,上班摸鱼我能玩一天
- IDM一直弹出下载框怎么办?
- matlab写函数教程,【Matlab基础】 自定义函数
- POWER+模块化UPS与传统UPS的比较
- 桌面创建html文件路径,html本地图片路径
热门文章
- 2020年到2021年计算机技术,2020年读计算机技术专业好不好
- 纷杂的Spring-boot-starter: 2 快速 Web 应用 开发 与 spring- boot- starter- web
- Maven的dependencies与dependencyManagement用法区别
- windows关闭被占用的端口
- (4)Spring框架----依赖注入(DI)
- 洛谷P2082 区间覆盖(加强版)(珂朵莉树)
- VMware Workstation 11序列号
- poj 1330 Nearest Common Ancestors
- VS2010+OpenCV2.4.6永久性配置方法
- JDK8帮助文档生成-笔记