词法环境和词法作用域

词法作用域(Lexical Scope):在JavaScript中,一个变量的作用域是在写代码的时候就决定了的,这就是词法作用域。换句话说,词法作用域是由你在写代码时将变量和块作用域写在哪里来决定的,因此当词法分析器处理代码时会保持作用域不变(除了特殊的eval或with情况)。

function outer() {
  let x = 1;

  function inner() {
    let y = 2;
    // 在这里,我们可以访问x和y
  }

  // 在这里,我们只能访问x,不能访问y
}

在这个例子中,inner函数形成了一个闭包,它可以访问其自身作用域内的y变量,也可以访问包含它的outer函数的作用域内的x变量。这就是词法作用域的一个例子。

词法环境(Lexical Environment):在ECMAScript规范中,词法环境是一种规范类型,用于定义变量和函数的关联。一个词法环境由环境记录(用于记录变量和函数)和一个可能的引用到外部词法环境的链接组成。

当JavaScript代码执行时,会创建词法环境来存储在代码执行过程中创建的变量和函数。每个执行上下文都有一个与之关联的词法环境,当执行流进入一个由函数、模块、脚本或者with语句创建的块时,会创建一个新的词法环境。

词法环境和词法作用域是紧密相关的,词法环境提供了存储变量和函数的地方,而词法作用域则决定了这些变量和函数在代码中的可见性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值