关于 JavaScript 中函数语句的推理

Reasoning about function statements in JavaScript

本文关键字:推理 语句 函数 JavaScript 关于      更新时间:2023-09-26

请考虑以下代码:

function f() {
  function Ctor() {}
  return { instance: new Ctor(), referenceToCtor: Ctor };
}
var a = f();
var b = f();
a.instance instanceof a.referenceToCtor; // true
b.instance instanceof a.referenceToCtor; // false

关于instanceof和函数语句的含义,这告诉我们什么?

这是否意味着每次调用f时都会实例化一个名为 Ctor 的全新函数对象,因此instanceof返回false

这是否类似于instanceof Array和多个窗口的问题?

这是否意味着每次调用f时都会实例化一个名为 Ctor 的全新函数对象,因此instanceof返回false

是的。

这类似于instanceof Array和多个窗口的问题吗?

是的。

函数声明在给定作用域中创建一个变量,每次运行外部函数时都会获得一个新函数和新作用域。

的,是的。