Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这里不创建执行上下文?_Javascript - Fatal编程技术网

Javascript 为什么这里不创建执行上下文?

Javascript 为什么这里不创建执行上下文?,javascript,Javascript,编写以下内容将导致对函数构造函数函数的求值,从而导致全局对象上存在指向函数对象实例Foo的属性 执行上下文是在调用函数时创建的,因此,即使没有调用Foo,是否也创建了全局上下文以外的执行上下文 我的想法如下: 在JavaScript中,一切都是一个对象,除了与原语相关的小异常。对象由函数创建。Foo是一个对象。已调用一个函数 根据上面长长的评论列表回答我自己的问题 没有创建执行上下文,因为执行上下文仅对用户定义的代码有意义。对于JavaScript引擎的内部操作,例如在问题代码中创建函数对象Fo

编写以下内容将导致对函数构造函数函数的求值,从而导致全局对象上存在指向函数对象实例Foo的属性

执行上下文是在调用函数时创建的,因此,即使没有调用Foo,是否也创建了全局上下文以外的执行上下文

我的想法如下:


在JavaScript中,一切都是一个对象,除了与原语相关的小异常。对象由函数创建。Foo是一个对象。已调用一个函数

根据上面长长的评论列表回答我自己的问题


没有创建执行上下文,因为执行上下文仅对用户定义的代码有意义。对于JavaScript引擎的内部操作,例如在问题代码中创建函数对象Foo的精确机制,则留给引擎实现者执行。

由于没有调用函数,因此未创建任何执行上下文。当您调用Foo时,将启动一个新的执行上下文。函数Foo{}是一个声明,而不是调用,那么为什么您希望在这里创建一个执行上下文呢?没有调用。您的理解是错误的,没有在后台调用函数-函数用于动态创建的函数-上面的代码只有一个函数声明。此外,即使引擎确实分配了一个我读过的引擎没有分配的上下文,它对您来说也是不可见的。您可能应该区分编程环境可见的操作和ECMAscript规范强制执行的操作,以指示该编程环境的关键实现细节。函数构造函数是后者的一部分。如果其中涉及到执行上下文,它会在程序员看到它之前消失,并且在调用Foo时它与函数Foo的执行上下文无关。等效于与不同于。
function Foo() {}