JavaScript高级程序设计:深入理解script标签
2018-03-29 14:51
841 查看
现在还记得刚开始学习前端的时候是直接开始上手敲代码的,有很多基础都是没有认真去学习。想想当初也是太年轻了,有点浮躁。其实如果想要学好JS的话,这些基础是绕不过去的。于是,也是在面试官的推荐下吧,沉下心来开始学习《JavaScript高级程序设计》这本书,这里记录一下自己在这本书中自己曾经漏过的知识点。
async:应该立即下载脚本,但是不应该妨碍页面中的其他操作。(空闲时下载)
charset:设置指定代码的字符集
defer:延迟加载(延迟到文档完全被解析和显示之后),立即下载但延迟执行
language :已废弃
src
type
与解析嵌入式的JavaScript代码一样,在解析外部JavaScript文件(包括下载该文件)时,页面的处理也会暂时停止。
解析JavaScript时,如果JS代码中遇到了“
但是我并不明白这种逻辑,我认为JS是可以实现多线程的。不过可以像Android那样,子线程不能够操作UI。这样就避免了同步问题。后来了解到HTML5中有了web worker,其实也就是像安卓那样通过postmessage通信,开启子线程做异步数据处理。
script标签属性
script元素的属性async:应该立即下载脚本,但是不应该妨碍页面中的其他操作。(空闲时下载)
charset:设置指定代码的字符集
defer:延迟加载(延迟到文档完全被解析和显示之后),立即下载但延迟执行
language :已废弃
src
type
script在加载时会阻塞当前页面的其他操作
包含在<script>标签中的代码会被浏览器的JS引擎从上到下依次解释。但是需要注意的是:在
<script>标签中所有代码求值完毕之前,页面中的其余内容都不会被浏览器加载或显示。
与解析嵌入式的JavaScript代码一样,在解析外部JavaScript文件(包括下载该文件)时,页面的处理也会暂时停止。
解析JavaScript时,如果JS代码中遇到了“
</script>” 字符串,将会停止解析,抛出错误。
外部JS文件其实不需要js扩展名
按照惯例,外部JavaScript文件带有.js扩展名。但这个扩展名不是必需的。因为浏览器不会检查包含JavaScript的文件的扩展名。如果不使用.js扩展名,请确保服务器能够返回正确的MIME类型。为什么JavaScript是单线程的?
如果JavaScript是多线程的话,一个线程操作dom并且删除了这个dom,而另一线程打算修改dom….该以哪个线程为准呢?这个时候肯定需要线程锁来保证线程安全,也就会有很复杂的线程同步问题。而作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这限制了它只能是单线程。但是我并不明白这种逻辑,我认为JS是可以实现多线程的。不过可以像Android那样,子线程不能够操作UI。这样就避免了同步问题。后来了解到HTML5中有了web worker,其实也就是像安卓那样通过postmessage通信,开启子线程做异步数据处理。
相关文章推荐
- javascript 高级程序设计:深入理解Object.keys 函数
- javascript 高级程序设计之 script标签的位置与延迟脚本
- 【JavaScript高级程序设计】读书笔记之一 —— 理解函数
- JavaScript高级程序设计第4章(变量、作用域的问题)自己的理解
- 【JavaScript高级程序设计】读书笔记之二 —— 理解对象的原型、继承
- 深入理解javascript之高级定时器
- 深入理解JavaScript高级之词法作用域和作用域链
- JavaScript高级程序设计——第6章 理解对象
- 深入理解JavaScript高级之词法作用域和作用域链
- Javascript高级技术篇(2): 深入理解面向对象
- 深入理解JavaScript高级之词法作用域和作用域链
- 《JavaScript 高级程序设计》 7.4 理解EegExg 对象
- 深入理解javascript之高级定时器
- 深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
- 深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
- JavaScript高级程序设计 Chapter 7 关于函数、闭包的笔记和理解
- Javascript高级程序设计——面向对象之理解对象
- 【原创翻译】深入理解javascript事件处理函数绑定三部曲(三)——高级事件函数绑定模型
- JavaScript高级程序设计之面向对象的程序设计之理解对象第6.1讲笔记
- 深入理解javaScript中数组对象的concat方法