RT,这句话出自《JavaScript权威指南》13.3。
首先,说一下我的理解:
核心JavaScript,指的是ECMAScript所设定的 基本语法和基本对象。
客户端JavaScript,指的是与浏览器交互的 方法和接口。
那么,在实际的页面解析和执行过程中,这两部分JavaScript各自的单线程执行模型有什么关联吗?他们各自负责哪些具体的工作?
------------------2017/2/18分割线----------------------
这句话有后半句,把整句话补充上:
“核心JavaScript和客户端JavaScript都有一个单线程执行模型。脚本和事件处理程序(无论如何)在同一个时间只能执行一个,没有并发性。”
首先,核心JavaScript和客户端JavaScript都有一个单线程执行模型
这句话中如果是说同一个单线程执行模型,不会用都有。
另外,后面一句脚本和事件处理程序(无论如何)在同一个时间只能执行一个
,既然要做选择,那么肯定是存在两个。
核心 JavaScript 是指 ECMAScript 262 Specification 中描述的部分,是 JavaScript 语言的核心。
客户端 JavaScript,如果理解为与浏览器交互的方法和接口的话,应该是浏览器实现的 ECMAScript 环境(引擎),可能还含有相关的配套库。
ECMAScript 中描述了 JavaScript 是单线程的(Spec 中没出现 thread 这个词,应该是通过某种描述限定了其运行方式,全英文没仔细去研究),那么客户端的实现肯定就是单线程的。JS 是通过任务队列的方式来处理需要调用的函数的,所以脚本在执行的时候,即使事件被触发,也只会加到任务队列里等当前脚本(函数)执行完成之后,轮到它的时候才执行。
这句话的意思应该是 JS本身只有一个线程
我来简单讲下我个人的看法。
核心js是语法规范也就是在理想状态下的js(没有兼容问题,完美的实现规范上的内容)。
客户端js是js语法规范的具体实现(node,browser)。
当js语言运行在浏览器端的时候,核心js就转化成了客户端js来实现具体的操作。
所以楼主的理解可能有些偏差,可能是认为js在运行时,有着两个执行模型,但实际上只有一个客户端js。