首页 > 试题广场 >

执行以下代码的输出是varFoo=(function(){v

[单选题]
执行以下代码的输出是
var Foo = (function() {
    var x = 0;
    function Foo() {}
        Foo.prototype.increment = function() {
        ++x;
        console.log(x);
    };
    return Foo;
})();

var a = new Foo();
a.increment();
a.increment();
var b = new Foo();
a.increment();

  • 1, 2, 1
  • 0, 1, 0
  • 0, 1, 2
  • 1, 2, 3
IEFE只执行了一次,Foo的外部词法环境没有改变。new Foo始终引用的是相同的词法环境。
发表于 2023-08-11 18:19:12 回复(0)
C
发表于 2023-04-06 01:51:37 回复(0)
Foo 函数形成了一个闭包,外界是访问不到局部作用域的 a,所以 increment() 是对内部的同一个 a 进行运算
发表于 2022-09-20 10:26:04 回复(0)