zoukankan      html  css  js  c++  java
  • 深刻理解this的指向和var 定义的变量的问题

    一般来说,在编程语言里我们常见的变量作用域就是词法作用域动态作用域(Dynamic Scope),绝大部分的编程语言都是使用的词法作用域。词法作用域注重的是所谓的Write-Time,即编程时的上下文,而动态作用域以及常见的this的用法,都是Run-Time,即运行时上下文。词法作用域关注的是函数在何处被定义,而动态作用域关注的是函数在何处被调用。JavaScript是典型的词法作用域的语言,即一个符号参照到语境中符号名字出现的地方,局部变量缺省有着词法作用域。此二者的对比可以参考如下这个例子:

    #1:变量-编程时的上下文

    function foo() {
        console.log( a ); 
    }
    function bar() {
        var a = 3;
        foo();
    }
    var a = 2;
    bar();    //2
    

    #2:变量-编程时的上下文

    var a = 2;
    function bar(){
       var a= 3;
       function foo() {return a;}
       return foo;
    }
    
    bar()()   //3
    

     #3:this-运行时上下文

    function foo() {    //函数定义在全局
        console.log( this.a ); 
    }
    function bar() {
        this.a = 3;
        foo();
    }
    this.a = 2;
    bar();    //3
    

     #4:this-运行时上下文

    function bar() {
        this.a = 3;
      function foo() {    //函数定义在局部
        console.log( this.a ); 
    }
        foo();
    }
    this.a = 2;
    bar();    //3
    

      

      

  • 相关阅读:
    一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)
    dynamic与var
    转载-V.I.Arnold, beyond a mathematician
    转载---青年问禅师
    转载-傅里叶级数的几何意义 – 巧妙记忆公式的方法
    转载--柯尔莫哥洛夫
    转载--黎曼
    动态规划复习
    几匹单调队列水题
    fastIO
  • 原文地址:https://www.cnblogs.com/wangyunhui/p/10423729.html
Copyright © 2011-2022 走看看