执行上下文

Posted lucy-xyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了执行上下文相关的知识,希望对你有一定的参考价值。

 <!--
        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>

 

以上是关于执行上下文的主要内容,如果未能解决你的问题,请参考以下文章

片段无法转换为上下文

如何在android的片段中设置应用程序上下文?

片段未附加到上下文 - 延迟的 UI 更改

片段着色器输出干扰条件语句

片段活动中的 ListView 适配器上下文错误,我该怎么办?

片段活动错误中的ListView Adapter上下文,我该怎么办?