每天早起锁定1小时阅读这本《JavaScript for Web Developers》原版书,一方面巩固专业基础,另一方面通过完成第一本原版书的阅读,增强通过英语获取信息的能力。
读了三周时间,平均10页/1小时/1天的速度。下面总结一下前四章的内容。
1.What Is JavaScript?
JavaScript的历史
JavaScript 由 Brendan Eich 于 1995 年发明,并于 1997 年成为 ECMA 标准。
JavaScript是一个web脚本语言,由独立的三部分构成:
- ECMAScript,是一种由Ecma国际,通过ECMA-262标准化的脚本程序设计语言。
- DOM(The Document Object Model-文档对象模型),提供了操作网页内容的方法和接口。
- BOM(The Browser Object Model-浏览器对象模型),提供了和浏览器交互所需的方法和接口。
所有现代浏览器都完全支持 ECMAScript 5(2009),逐渐增加对ES6、7的支持。
2.Javascript in HTML
JS嵌入HTML,使用<script>元素标签;
外部引入的JS文件,需要注意的有:
1)项目中包含外部JS文件或者存在于一个完全不同的域下;
2)不使用defer和async属性时,外部JS文件按照他们在HTML中出现的顺序解析;
3)非defer的脚本要在解析完所有<script>标签中的脚本之后渲染后面的页面,因此<script>脚本一般放在文档的最后</body>标签之前;
4)使用defer可以让脚本在页面渲染完之后执行;
5)async属性可异步执行脚本;
6)<noscript> 于浏览器不支持JS的情况下执行。
3.Language Basics
JS语言的核心特性定义在 ECMA-262中,基本数据类型包括 Undefined, Null, Boolean, Number, String和 Symbol.
Number代表所有的数据类型,int、float等
ECMAScrip借鉴了很多C和类C语言的特性,包括算术运算符,布尔运算符,关系运算符,等号、赋值运算符,循环控制语句包括if、for、switch等。
4.Variables, Scope, and Memory
- JS的变量值包括两种类型:原始值和引用值,原始值来自6中原始类型
1)原始值具有固定的大小,在内存中存储在栈上,拷贝原始值是产生了一个新值,拷贝引用类型值,是产生了一个指针和原值指向同一块内存区域,操作其中一个值另一个也跟着变了
2)typeof运算符用于判断一个原始值的类型,instanceof 用于判断一个引用类型值。 - 执行上下文和作用域
- 垃圾回收
主要有两种策略:标记清除和引用次数(mark-and-sweep, and reference counting.)