JavaScript ( JS ) 是一个单线程、解释型的编程语言。编程
JavaScript语言的一大特色就是单线程,也就是说,同一个时间只能作一件事。编程语言
自上而下,解释一行,执行一行;不会通篇编译为一个文件再执行。函数
顾名思义 就是检查一遍js代码内有没有出现语法错误(好比少些个分号,多写个括号等);语法分析期间不会执行代码线程
预编译发生在函数执行的前一刻
全局下:
全局的变量声明和函数声明则会存放在全局对象内(Global Object 简称GO,它是window的一部分,你能够直接把他理解成window对象)中
函数体内:
预编译会提早把函数里的变量声明和函数声明依据规则存放在该活动对象内(Activation Object,简称AO),code
预编译简单理解就是在内存中开辟一些空间,存放一些变量与函数 。对象
预编译大体可分为4步:ip
因此若是遇到下面这种状况,当函数声明和变量声明名称相同时:内存
console.log(a); var a= 1; function a(){};
编译后的代码实际上是:io
var a; function a(){}; console.log(a); a= 1;
因此最后输出的是:console
function a() {}
预编译两个小规则
预编译前奏
<script> var a=2; console.log(window.a);//2 </script>
预编译完毕以后,JavaScript 脚本开始执行,执行顺序按照从上到下的顺序执行。
JavaScript执行顺序
练习:
function a(a){ console.log(a); a= 2; console.log(b); var b= 3; console.log(a); } a(1); console.log(a);
你能够先试想一下结果,而后复制代码到控制台去验证你的答案是否正确。