执行上下文

JS原理:原型链、执行上下文、事件循环
预备知识
1 栈 stack在这里插入图片描述
在这里插入图片描述
栈是类似于数组的一种数据结构。
2对象引用

在这里插入图片描述

//user1指向用户对象
//user1持有用户对象的引用
var user1={
 name:"abc"
 }
 var user2=user1;
 user2.name="张三";
 console.log(user1.name,user2.name);//张三 张三
 

概念
执行上下文:某个函数或全局代码的执行环境,该环节中包含执行代码需要的所有信息
可以简单的理解为 执行上下文是一个对象,对象中包含了执行代码所需要的信息
当执行一个函数时,需要建立执行上下文,才正式开始执行
call stack(执行上下文栈):组织管理程序运行过程中的执行上下文

var a =2;
function bar(){
var i=3;
	function foo(){
	var b=4;
	method();
	}
foo();
console.log("123");
}
function method(){
	console.log("abc");
}
bar();

执行栈:

-console.log函数的执行上下文
-method函数的执行上下文
-foo函数的执行上下文
-bar函数的执行上下文
-栈底:全局执行上下文
//永远执行栈顶的上下文,执行完一个就pop

执行上下文的内容

  1. vo:variable object ,变量对象,存放的是函数或全局代码执行过程中需要用到的局部变量
  2. scope:作用域
  3. this

vo是一个对象,调用函数或执行全局代码时创建

function foo(a,b){
	bar();		//能调用吗? 能,因为VO里面有
	functon bar(){
	console.log("hello"):
				}
}
foo(3,4);

foo函数的执行上下文建立过程:
{
vo:{
a:3,
b:4,
arguments:{。。。}
bar:指向一个函数
}
}
创建VO对象
1.确定形参值
2确定函数中所有的函数字面量声明
1.该函数必须是字面量声明,字面量声明提取到VO后,该声明失效
2如果当前VO中出现同名属性,直接覆盖
3确定函数中所有的变量声明(var).将其提取到上下文中,值为underdifined
1如果当前VO中出现同名属性,忽略

function foo(a,b){
   console.log(a);	//fn
   console.log(b);	//4
   function a(){
      console.log("a");	//不执行
   }
   var a=function(){
      console.log("b");	
   }
   a();	//b
   var a=10;
   console.log(a);	//10
}

VO{
a:3,--》指向函数a--》指向函数b————》10
b:4,

var foo=1;
function bar(){
   console.log(foo); //underfined
   if(!foo){
      var foo=10;
   }
   console.log(foo);		//10
}
var a=1;
function b(){
   console.log(a);		//fn
   a=10;
   return;
   function a(){}					
}
b();			
console.log(a); //1  函数结束,执行上下文消失
console.log(foo);		//fn指向C
var foo="A";			
console.log(foo);		// A
var foo=function(){
   console.log("B");		
}
console.log(foo);		// fn指向函数B
foo();		//B
function foo(){
   console.log("C");
}
console.log(foo);		//fn指向B
foo();			//B
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值