js高级_105、执行上下文
1、代码分类(位置)
全局代码
函数(局部)代码
2、全局执行上下文对象
①在执行全局代码前将window确定为全局执行上下文对象(全局执行上下文对象每次执行js代码只存着一个)
②对全局数据进行预处理
*var定义的全局变量 = =>undefind,添加为window的属性。
*function声明的全局函数 = =>赋值(fun),添加为window的方法。先执行变量提升再执行函数提升。
*this = =>赋值(window)。
③开始执行全局代码
全局执行上下文对象
console.log(a1);//相当于从全局上下文window里找a1,也就是window.a1
var a1=3;
a2();//相当于从全局上下文window里找a2,也就是window.a2();
function a2(){
console.log(555);
}
3、函数执行上下文对象
①在调用函数,准备执行函数体之前,创建对应的函数执行上下文对象(该对象是临时的,虚拟的,放在栈里的,在函数被调用时才创建,是栈单独给它划了一小块封闭的空间,这个空间就称为对象,只不过这个对象是存着栈的,而且里面存的是函数的形参,局部变量,参数列表等,外部是无法访问这个区域的数据的,而且函数调用完毕,该区域自动清除消失)。函数执行上下文对象只有在函数被调用时才会被创建。
②对局部数据进行预处理
*形参变量= =>赋值(实参)= =>添加为函数执行上下文对象
*arguments= =>赋值(参数列表),添加为函数执行上下文对象的属性。
*var定义的局部变量= =>undefind,添加为函数执行上下文对象的属性。
*function声明的函数= =>赋值(fun),添加为函数执行上下文对象的方法。
*this= =>赋值(调用函数的对象)
③开始执行函数体代码
function fn(a1){
//函数这里能访问的有
console.log(a1);
console.log(a2);
a3();
console.log(this);
console.log(arguments);//伪数组
var a2=3;
function a3(){
console.log(555)
}
}
fn(2,3)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构