函数2

作用域

function fun(){
    var a =0;
    alert(a);  
}
fun();
alert(a);
作用域:变量的作用范围
全局变量
    作用范围为整个程序的执行范围
    在函数体外部定义的变量就是全局变量
    在函数体内部不使用var定义的也是全局变量
局部变量
    作用范围是某个函数体内部
    在函数体内部通过var关键字定义的变量或者形参,都是局部变量
    当局部变量与全局变量重名时,在函数体内部局部变量优先于全局变量
 
return关键字
    1.结束函数的执行
    2.交回函数执行权
    3.返回一个结果函数调用位置
 
堆栈
    是一种数据结构,指的是数据存取的方式,当定义一个变量时,内存会开辟一段空间
    
    栈( Stack):先进后出(FILO),在栈顶做插入(压栈)和删除操作(出栈)。
    队列:先进先出(FIFO),在队头做删除操作,在队尾做插入操作。
   堆和它们不同,代码执行时系统动态分配,不存在是先进后出还是先进先出。
 

执行环境执行栈(也称执行上下文–execution context)

        当JavaScript解释器初始化执行代码时,它首先默认进入全局执行环境,从此刻开始,函数的每次调用都会创建一个新的执行环境,每一个执行环境都会创建一个新的环境对象压入栈中 
        当执行流进入一个函数时,函数的环境对象就会被压入一个环境栈中(execution stack)。在函数执行完后,栈将其环境弹出,把控制权返回给之前的执行环境。
 
作用域链
内层环境可以访问外层中的变量和函数,而外层环境不能访问内层的变量和函数
 

变量生命周期

       全局变量的生命周期直至浏览器卸载页面才会结束。
       局部变量只在函数的执行过程中存在,而在这个过程中会为局部变量在栈或堆上分配相应的空间,以存储它们的值,然后再函数中使用这些变量,直至函数结束
 
 

 

posted @ 2020-04-05 00:45  strongerPian  阅读(142)  评论(0编辑  收藏  举报
返回顶端