码迷,mamicode.com
首页 > 其他好文 > 详细

执行上下文

时间:2019-11-07 20:47:59      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:声明   准备   定义   define   数据   局部变量   消失   fun   数组   

 <!--
        1.代码分类(位置)
            全局代码
            函数(局部)代码
        2.全局执行上下文
            在执行全局代码前window确定为全局执行上下文
            对全局数据进行预处理
                var定义的全局变量==》undefined,添加为window的属性
                function声明的全局函数==》赋值(fun),添加为window的方法
                this==>赋值(window)
            开始执行全局代码
        3.函数执行上下文
            在调用函数,准备执行函数体之前创建(window上下文对象是已经有了,function需要创建)对应的函数执行上下文对象(并不是完全真实存在的,用完就消失,是个封闭独有的区域,函数外看不见)
            对局部数据进行预处理
                形参变量==》赋值(实参)==》添加为执行上下文的属性
                arguments===>赋值(实参列表),添加为执行上下文属性
                var定义的局部变量==》undefined,添加为执行上下文的属性
                function声明的函数==>赋值(fun),添加为执行上下文的方法
                this===>赋值(调用函数的对象
            开始执行函数体代码
<script>
    //全局执行上下文
    //首先变量提升,预处理
    //var a1 ;function a2,this=function 都放到window里  window就是执行上下文
    //执行a1的时候就去window里找,执行a2也去window里找
    console.log(a1,window.a1)

    window.a2()
    console.log(this)
    var a1=3
    function a2(){
        console.log(a2())
    }
    //函数执行上下文
    function fn(a1){
        console.log(a1)//2  去执行函数上下文对象里找
        console.log(a2)//undefined 去执行函数上下文对象里找
        a3()//a3() 去执行函数上下文对象里找
        console.log(this)//window 去执行函数上下文对象里找
        console.log(arguments)//伪数组[2,3] 去执行函数上下文对象里找


        var a2=3
        function a3(){
            console.log(a3())
        }
    }
    fn(2,3)//要执行才会创建scope空间  没有fn()则不会创建空间,但不管执不执行都要准备要

</script>

 

执行上下文

标签:声明   准备   定义   define   数据   局部变量   消失   fun   数组   

原文地址:https://www.cnblogs.com/lucy-xyy/p/11708333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!