作为一个已经有N年开发经验的前端老鸟,重新阅读 JavaScript 高级程序设计这个经典红宝书。虽然有些内容读起来会有些浅显,但是读的过程中,依然发现有些知识是自己未曾涉及或者已经忘记的,特意写下来,对自己来说也是一个记录。
接下来将会按到知识点实际出现的章节来记录。
第二章
2.1 <script>元素
- 在使用行内 JavaScript 代码需要注意,代码中不能出现 </script>, 如果出现将会导致浏览器报错。这是因为浏览器在解析 HTML 文件中的JavaScript代码时,将会逐行解析,当遇到 这个标签时,将会把它当做结束标签,从而出错。
<script>
function test() {
console.log("</script>"); // 将会浏览报错报错
console.log("<\/script>"); // 添加转义符即可
}
</script>
-
使用了 src 属性的<script>元素不应该在在标签中包含其他的行内代码,两者都存在的话,浏览器只会下载并且执行脚本文件,从而忽略行内代码。
-
推迟执行脚本 defer 跟 异步执行脚本 async 的区别,两者都告诉浏览器立即开始下载,不过与 defer 不用的是, async脚本并不能按照他们出现的次序执行。
第三章
3.3 变量
- 与 var 关键字不同,使用 let 在全局作用域中声明的变量不会成为 window 对象的属性( var 生命的变量则会)。但是 let 作用域依然是全局作用域,会在页面的生命周期内续存。
3.4 数据类型
- 6中简单数据类型: undefined, Null, 布尔,Number,String, Symbol, 复杂数据类型 Object
- Typeof 的数据类型: undefined, boolean,number, string, symbol, object, function, Null的数据类型为Object,代表对空对象的引用。