Javascript 在闭包中作为参数传递变量
我正在研究闭包,发现了以下用于递增名为count的“private”变量的示例代码:Javascript 在闭包中作为参数传递变量,javascript,arguments,closures,Javascript,Arguments,Closures,我正在研究闭包,发现了以下用于递增名为count的“private”变量的示例代码: function setup() { var count = 0; return function() { count += 1; console.log(count); } }; var next = setup(); next(); 这对我来说很有意义。但是,当我尝试将变量作为参数传递给嵌套函数时,next()会将“NaN”记录到控制台。例如:
function setup() {
var count = 0;
return function() {
count += 1;
console.log(count);
}
};
var next = setup();
next();
这对我来说很有意义。但是,当我尝试将变量作为参数传递给嵌套函数时,next()会将“NaN”记录到控制台。例如:
function setup() {
var count = 0;
return function(count) {
count += 1;
console.log(count);
}
};
var next = setup();
next();
有人能解释为什么会这样吗
有人能解释为什么会这样吗
在闭包内部,count
现在引用参数,function(count){
。由于调用函数时没有传递任何参数,count
是undefined
,向undefined
添加一个数字会导致NaN
当我尝试将变量作为参数传递给嵌套函数时
需要明确的是:count参数与外部函数中定义的
count
变量无关。您没有将变量作为参数传递,因为您没有调用函数,而是在定义它。这是因为内部函数现在可以访问更局部的变量,所以它没有sn不查看它对“count”变量有权访问的任何闭包。并且没有传递任何内容,因此count是未定义的
这个答案可能有用: