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
    

      

      

  • 相关阅读:
    NDK中使用pthread多线程中自己写的一个BUG
    Android Native crash日志分析
    Android细笔记--DataStorage
    求二叉树第n层节点数
    对YUV数据进行裁剪
    Android XML中引用自定义内部类view的四个why
    Android细笔记--ContentProvider
    Android Log Tag含义
    189-RotaeArray
    二分查找法
  • 原文地址:https://www.cnblogs.com/wangyunhui/p/10423729.html
Copyright © 2011-2022 走看看