当前位置: 首页 > 知识库问答 >
问题:

论元在词汇环境中的位置是什么?

干高歌
2023-03-14

下面的代码总是打印传入参数a的参数,而不考虑是否存在同名变量。

可能是因为参数标识符单独绑定到作用域中的变量。他们的位置在哪里?他们在词汇环境中吗?

null

function foo(a, b = () => a) {
  var a = 1
  console.log(b())
}
foo() // undefined
foo(2) // 2

null

是否var声明最终位于特殊的VariableEnvironment中,而参数位于lexicalEnvironment中?和letconst通过使重定义成为早期错误来避免冲突?

相关的还有:

  • 8.3.2 ResolveBinding(名称[,env])
  • 8.1.1环境记录

共有1个答案

钦侯林
2023-03-14

如果存在任何默认值,将为参数创建单独的环境记录。

在此位置声明的函数的语义是这样的,即此环境记录定义它们的局部范围。规范中的注释(见第28条)指出:

注意:需要一个单独的环境记录,以确保形参列表中的表达式创建的闭包不具有函数体中声明的可见性。

规范中的更多内容:

当为计算ECMAScript函数建立执行上下文时,将创建一个新的函数环境记录,并在该环境记录中实例化每个形参的绑定。函数体中的每个声明也被实例化。如果函数的形参不包括任何默认值初始化器,则在与参数相同的环境记录中实例化主体声明。如果存在默认值参数初始化器,则为正文声明创建第二个环境记录。形式参数和函数作为FunctionDeclarationInstantiation的一部分进行初始化。所有其他绑定都在函数体的计算过程中初始化。

因此,在没有缺省参数的情况下,我推断一个预先存在的词法环境(VariableEnvironment或LexicalEnvironment)用于参数绑定。也许吧。

 类似资料:
  • 问题内容: 什么是词汇作用域简介? 问题答案: 我通过示例了解它们。:) 首先,采用类似C的语法的 词汇作用域 (也称为 静态作用域 ): 每个内部级别都可以访问其外部级别。Lisp的第一个实现使用另一种称为动态范围的方式,再次使用类似C的语法: 在这里既可以访问的或,或在调用任何函数与在其声明。 将打印5 将打印10。 第一个称为静态,因为它可以在编译时推导,第二个称为动态,因为外部范围是动态的

  • New in version 1.1. 你完全有可能遇到一些更新包需要通过proxy才能正常获取,或者甚至一部分包需要通过proxy升级而另外一部分包则不需要通过proxy.或者可能你的某个脚本需要调用某个环境变量才能正常运行. Ansible 使用 ‘environment’ 关键字对于环境部署的配置非常简单容易,下面是一个使用案例: - hosts: all remote_user: ro

  • 三维世界(3D world) 光影关系(Light and shadow) 三维世界(3D world) Material 环境是一个三维的空间,这意味着每个对象都有 x , y , z 三维坐标属性,z 轴垂直于显示平面,并延伸向用户视角,每个 material 元素在 z 轴上占据一定的位置并且有一个 1dp 厚度的标准。 在网页上,z 轴被用来分层而不是为了视角。3D 空间通过操纵 y 轴进

  • 问题内容: 如何为symfony设置环境变量。 就像我运行我的项目一样,它应该解开环境并执行操作,例如- 因此,如果我在本地主机上运行mysql请求,则应在以下位置发出请求 如果我提出对Elasticsearch的要求,则应在以下位置提出要求 如果它在生产环境中运行,则应在 我认为可以做到这一点,但我真的不知道如何做到。 有人可以帮我解决这个问题。非常感谢高级。 问题答案: 我不确定这是什么问题,

  • 我有以下JavaScript代码*** var pos=文档。getElementById('pos')<位置样式。位置='相对'<位置样式。宽度='100%'<位置样式。高度='100%'<位置样式。背景='灰色' 对于(i=1;i HTML代码:*** 第一个元素的位置正确,顶部为0px,左侧为30px,但是第二个和第三个元素的位置不正确,我尝试使用显示作为内联元素,但仅将它们设置在同一行上,

  • 本文向大家介绍php web环境和命令行环境下查找php.ini的位置,包括了php web环境和命令行环境下查找php.ini的位置的使用技巧和注意事项,需要的朋友参考一下 php.ini 是php运行的配置文件,不是一个必须使用的文件。不过通常php程序运行都需要加载php.ini文件。 php.ini 提供了一些重要的参数。比如运行的时候出错的时候是否报错,运行的内存最大是多少 和一些php