zoukankan      html  css  js  c++  java
  • 作用域链及其相关概念

        //作用域链
        var title ="链条";
        function f1(){
            console.log("f1"+title);
            function f2(){
                console.log("f2"+title);
                function f3(){
                    console.log("f3"+title);
                }
                f3();//f3链条
            }
            f2();//f2链条
        }
        f1();//f1链条

    定义: 

    变量在当前环境,内部环境,内部深层环境都其作用的现象形成了一个链条,这个链条就被称为变量的“作用域链”

    特点:外部环境变量,可以给内部环境使用

    作用域链的作用

    1.变量必须“先声明,后使用”

    函数可以“先使用,后声明”,原因是函数有预加载过程,本质还是函数声明在前,使用在后

        //变量必须"先声明。后使用 "
        //同名的函数和变量的执行有顺序问题
    
        var getInfo = "school";
        getInfo(); //itcast
        function getInfo(){
            console.log("itcast") //Uncaught TypeError: getInfo is not a function
        }

    2.内部环境可以访问外部环境的变量,反之不然

        var  age = 20;
        function f1(){
            var height =170;
            console.log(age); //内环境,访问外环境 变量
        }
        f1();
        console.log(height);//外环境访问内环境变量(不允许)

    3.变量的作用域是声明时决定的,而不是运行时

        var food = "milk";
        function f1(){
            console.log(food); //milk
        }
        function f2(){
            var food = "brand";
            f1();
        }
        f2(); 

    函数是在全局声明的,而调用时在f2内部环境调用的,由此可以发现,变量的作用域是声明的时候决定的,而不是在运行时

    活动对象 AO Active Object

    1,js代码执行是有环境的

    2,该环境定义了其有权访问的其他数据

    3,环境有一个与之相关的活动对象AO

    4,环境中所有的变量和函数都是活动对象的属性

    5,全局环境是最外围的执行环境,活动对象是window对象

    6,执行环境中的代码执行完毕后会被销毁

    执行环境以及顺序优先级

     var height =175; //外部环境变量
        function f1() {
            var height = 165; //外部环境变量
            function f2(height) { //形参
                var height = 190;
                console.log(height);
                function height() { //本环境函数
                    alert('skdjlks')
                }
            }
    
            f2(180);
        }
        f1();
     优先级  内部环境变量》》本环境函数》》》形参》》》 外部环境变量

     全局变量和局部变量

     全局变量:全局变量 其是活动对象 window的成员信息

      局部变量:其在一定范围内可以看做是"全局变量",其在本环境,内部环境,内部深层环境都可以被访问

      

  • 相关阅读:
    HDU 3537 Daizhenyang's Coin(博弈,翻硬币)
    【转】博弈-翻硬币游戏
    QRCode.js:使用 JavaScript 生成二维码
    3种高效的Tags标签系统数据库设计方案分享
    CI框架+Umeditor上传图片配置信息
    【军哥谈CI框架】之CI中集成百度UEditor
    【ci框架基础】之部署百度编辑器
    CI框架中集成CKEditor编辑器的教程
    如何将文本编辑器嵌入框架--以Umeditor&CodeIgniter框架为例
    ****CI和UEditor集成
  • 原文地址:https://www.cnblogs.com/lrgupup/p/10178146.html
Copyright © 2011-2022 走看看