单线程解释型语言
1.作用域的定义:变量(变量作用域又称上下文)和函数生效(能被访问)的区域
2.全局变量
局部变量: 在函数内定义的变量
函数里可以访问全局里的变量
函数外面不能访问函数内的变量(越往里权限越大)
3.JS运行三步: 语法分析(通篇扫描但是不执行),预编译,解释执行
4.预编译:函数声明整体提升 --> 函数声明不管写到哪里总是提到逻辑的最前面
变量 声明提升 -----> 只把变量的声明提升到前面
知识点 :
1. imply global -- 暗示全局变量 : 即任何变量,如果未经声明就直接赋值,此变量就为全局对象所有
2. 一切声明的全局变量,全是window属性 --- window就是全局的域 --window就是全局
eg: var a = 123; ====》 window.a=123;
3.预编译发生在函数执行的前一刻
1.函数体内的预编译(四步)
1.0创建AO对象 Activation Object (执行期上下文---作用域)
2.0找形参和变量声明,将变量和形参名作为AO属性名,值为 undefined
3.将实参值和形参统一(把实参的值传到形参)
4.在函数体里面找函数声明,值赋予函数体
例子:
第一题:
第二题:
第三题:
ps:注意函数的 赋值式
2.0全局的预编译 GO === window 步骤:
1.创建GO对象 Global Object(GO就是window)
2.找形参和变量声明,将变量和形参名作为GO属性名,值为 undefined
3.找函数声明,值赋予函数体
先生成GO再生成AO
例题:
第一题:
第二题:
第三题: