zoukankan      html  css  js  c++  java
  • 什么是词法环境(lexical scope)

     定义:lexical scope又称作static scope,相对于dynamic scope。出处  外文链接

    个人认为把scope理解为环境更好理解

    什么是dynamic scope呢?看下面的案例

    function foo() {
      console.log(this.a)
    }
    const o = {
      a: 10,
      fn: foo
    }
    o.fn()  // 10
    const obj = {
      a: 20,
      fn: foo
    }
    obj.fn()  // 20

    o和obj两个对象分别调用fn函数返回的结果分别是10和20,fn函数没有改变但是返回的结果却不同,这是因为fn函数外部的环境不一样

    我们再来看看static scope,案例如下:

    function foo() {
      const o = {
        a: 30,
        fn: function() {
        console.log(this.a)
        }
      }
      o.fn()
    }
    const _object = {
      a: 40,
      foo: foo
    }
    foo() // 30
    _object.foo()  // 30

    foo和_object.foo返回的值是一样的,并没有因为外部的环境改变了而导致结果不一样,可以理解为红色标记的内联函数(匿名函数)构建了封闭的static scope

  • 相关阅读:
    Director.js路由
    高程第二天
    插件
    Github学习
    高程第一天
    盒子居中显示
    锋利的jq第四天
    锋利的jq第三天
    锋利的jq第二天
    锋利的jq第一天
  • 原文地址:https://www.cnblogs.com/re-doc/p/14085827.html
Copyright © 2011-2022 走看看