在协同工作室前端组学习,进行暑假培训,期间我将对JavaScript的部分知识进行自我总结与发表个人看法
JavaScript的特色
Javascript是一门解释型的单线程语言,这是为了避免多线程时可能引起的冲突。浏览器在解释代码时是从上至下逐步进行解释翻译的,但是我们在电脑上CPU不一定是满载的,有可能是闲置的,这就导致了现在多核CPU计算能力的浪费,因此出现了事件处理机制去利用多核CPU的计算能力。
#事件机制
执行栈
JavaScript在执行代码的时候,每一个行为(函数)都会进入到一个栈中去等待执行————先进入后执行。
执行栈就是主线程,当CPU遇到需要花费时间长的任务(如setTimeout)时,会跳过,直接执行下一个任务。
##回调队列Callback queue
上面所说CPU遇到花费时间长需要等待的任务也就是所谓的异步任务时,比如DOM/Ajax/setTimeout,此时会将任务放在一个队列中,此队列就叫做回调队列,也是异步处理机制的一部分。当主线程中的任务处理完后,就会调出队列中的任务去完成,先进入队列的就会先被处理。此外,任务队列还会存放一些具有定时器的回调函数。
##运行机制
- 执行栈(主线程)执行所有的任务,回调队列不执行任务
- 当主线程上的任务全部完成后,会一个一个调出任务队列中的任务进入到主线程中去执行
- 就是不断重复以上两个步骤

###回调函数
所谓回调函数,就是会被主线程挂起来的代码。
##定时器
定时器主要是由setTimeout超时调用和setInterval间歇调用所组成,setTimeout接受两个参数,一个是回调函数,一个是执行的时间。
两者的区别是setTimeout是一次调用,而setInterval是不断调用。
作者 张翔
2015 年 07月 15日