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
    

      

      

  • 相关阅读:
    Python爬虫3大解析库使用导航
    pyquery解析库的介绍和使用
    BeautifulSoup解析库的介绍和使用
    Xpath解析库的使用
    python爬虫之正则表达式(用在其他地方也可)
    requests的基本使用
    Linux下防范小型cc攻击
    图片素材资源
    postman安装
    edraw快捷键
  • 原文地址:https://www.cnblogs.com/wangyunhui/p/10423729.html
Copyright © 2011-2022 走看看