美文网首页
作用域链简单说明

作用域链简单说明

作者: Coding破耳 | 来源:发表于2018-03-25 23:02 被阅读0次

    在函数在执行的过程中,对于函数内部需要使用到的变量
    1.先从自己内部找变量,比如:

    function sum(a,b){
        console.log(a+b);
    }
    
    sum(3,4);
    

    函数sum()中使用到的两个变量,都是函数内部有的,直接使用;
    调用sum(3,4)就直接输出7

    1. 如果找不到,再从创建当前函数所在的作用域去找
    var b = 3;
    function sum(a){
        console.log(a+b);
    }
    
    sum(3);
    

    函数sum()中使用到的两个变量,a是函数内部有的,b在函数内部没有,查找创建sum方法时所在作用域,得到b = 3,直接使用;
    调用sum(3)就直接输出6

    1. 创建当前函数所在的作用域找不到,再往上找
    var c = 2;
    function fn(x)
    {
      function sum(a){
        console.log(a+c);
      }
      sum(x);
    }
    
    fn(3);
    

    调用fn(),其实是调用sum();函数sum()中使用到的两个变量,a是函数内部有的,c在函数内部没有,查找创建sum方法时所在作用域,没找到;继续往上查找,得到c = 2,直接使用;
    调用sum(3)就直接输出5

    1. 注意找的是变量的当前的状态
    var c = 2;
    function fn(x)
    {
      function sum(a){
        console.log(a+c);
      }
      sum(x);
    }
    c = 10;
    fn(3);
    

    以上用例,执行fn()时c已经被赋值为10;因此输出13

    相关文章

      网友评论

          本文标题:作用域链简单说明

          本文链接:https://www.haomeiwen.com/subject/atokcftx.html