闭包变量,会保存在内存中

发布时间 2023-11-11 01:41:50作者: 龙陌

执行以下程序,下列选项中,说法错误的是()

function fn(){

var num = 0;

return function(){

console.log(++num);

}

}

var fun = fn();

fun(); ...①

fun(); ...②

A
程序存在闭包现象

B
匿名函数的this指向window对象

C
①式输出1

D
②式输出1

正确答案:D
官方解析:
A选项,闭包需要满足以下特征:
(1)有外层函数嵌套内层函数;
(2)内层函数使用外层函数的局部变量
(3)内层函数返回外部,并且被全局变量保存,因此A正确;

B选项,匿名函数的this指向window对象,B正确;

++num为前置自增,因此①式输出1,

又因为num为闭包变量,会保存在内存中,再次调用fun()会继续自增,因此②式输出2。

A.fn()包着一个匿名函数function,形成闭包 正确✅
B.只要是fn()这种形式执行的,this都是默认绑定指向window✅
(this的四种绑定 默认、隐式、显式、new绑定)
C.fun(); ...① 值为1,num先自增1后赋值 值为1 正确✅