JavaScript 高级程序设计阅读笔记

156 阅读1分钟

作为一个已经有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,代表对空对象的引用。