zoukankan      html  css  js  c++  java
  • 7_1:作用域 + 作用域链

    1)什么是作用域

    作用域:变量名字在某个范围内起作用和效果
    目的:增加了程序的可靠性

    2)作用域分类

    //1 全局作用域:整个script标签 或者一个单独的js文件
    //2 局部作用域:只能在函数内部使用 [ 也称 函数作用域 ]
    //3 块作用域:{}大括号就是一个块作用域 [ es6语法新增 ]

    3)全局变量

    //1 函数外定义的变量 = 全局变量 = 全局作用域
    //2 销毁:浏览器关闭的时候才会销毁 [ 比较耗内存 ]

    4)局部变量

    //1 函数内定义的变量 = 局部变量 = 局部作用域
    //3 销毁:函数执行完成后立即销毁 [ 节省内存 ]

    注意点

    如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量。

    以下实例中 carName 在函数内,但是为全局变量。

    // 此处可调用 carName 变量
     
    function myFunction() {
        carName = "Volvo";
        // 此处可调用 carName 变量
    }

    4)作用域链 [ 链式查找 就近原则 ]

    //概念:内部函数可以访问外部的变量,采取链式查找的方式来决定取那个值,这种结构我们称为作用域链
    
    var num = 10;//全局作用域
    function fu() { //外部函数
        var num = 20;
        function fun() { //内部函数
            console.log(num);
        }
        fun();
    }
    fu();//打印了20
    //通过链式查找 先找父级 父级有就用父级的
    //父级如果没有 继续向上查找 这就称为作用域链

    链式查找图

  • 相关阅读:
    JS站点
    1011 World Cup Betting (20分)
    1007 Maximum Subsequence Sum (25分)(动态规划DP)
    1006 Sign In and Sign Out (25分)
    1005 Spell It Right (20分)
    1004 Counting Leaves (30分)(DFS)
    1003 Emergency (25分)(Dijkstra算法)
    1002 A+B for Polynomials (25分)
    1001 A+B Format (20分)
    canvas
  • 原文地址:https://www.cnblogs.com/fuyunlin/p/14406025.html
Copyright © 2011-2022 走看看