Javascript 初始化、添加到、保存函数中的局部变量,并使用函数访问该变量 var jFunc=function(){ var-q; var p=0; q=(类型(q)==“未定义”)?0:q; p+=1; q+=p; 控制台日志(q); };

Javascript 初始化、添加到、保存函数中的局部变量,并使用函数访问该变量 var jFunc=function(){ var-q; var p=0; q=(类型(q)==“未定义”)?0:q; p+=1; q+=p; 控制台日志(q); };,javascript,Javascript,在chrome developer tools的控制台中,console.log(q)的输出是q+1(1、2、3、4等等…)在jFunc中运行整个代码块的每个后续迭代都独立于调用jFunc。但是,当调用jFunc时(为了方便地避免在控制台内复制和粘贴代码块),每次输出总是1。为什么会这样 我们的目标是将一个数值保存到一个变量中,在不使用全局变量的情况下向其添加1并返回它。您需要的是一个具有自己的持久作用域的函数来跟踪计数器。您可以在定义jFunc时使用IIFE: constjfunc=(()=

在chrome developer tools的控制台中,
console.log(q)
的输出是
q+1
(1、2、3、4等等…)在
jFunc
中运行整个代码块的每个后续迭代都独立于调用
jFunc
。但是,当调用
jFunc
时(为了方便地避免在控制台内复制和粘贴代码块),每次输出总是
1
。为什么会这样


我们的目标是将一个数值保存到一个变量中,在不使用全局变量的情况下向其添加1并返回它。

您需要的是一个具有自己的持久作用域的函数来跟踪计数器。您可以在定义
jFunc
时使用IIFE:

constjfunc=(()=>{
设p=0;
return()=>{
p++;
返回p;
}
})();
log(jFunc());
log(jFunc());

log(jFunc())您可能正在寻找

您必须将重复功能作为函数返回,以便只能调用该部分。Rest只声明一次,并且是该函数作用域的局部

var jFunc=(函数(){
var-q;
var p=0;
返回函数(){
q=(类型(q)==“未定义”)?0:q;
p+=1;
q+=p;
console.log('q',q);
返回q;
}
})();
jFunc();
jFunc();
jFunc()