Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在闭包中作为参数传递变量_Javascript_Arguments_Closures - Fatal编程技术网

Javascript 在闭包中作为参数传递变量

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”记录到控制台。例如:

我正在研究闭包,发现了以下用于递增名为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) {
        count += 1;
        console.log(count);
    }
 };
 var next = setup();
 next();
有人能解释为什么会这样吗

有人能解释为什么会这样吗

在闭包内部,
count
现在引用参数,
function(count){
。由于调用函数时没有传递任何参数,
count
undefined
,向
undefined
添加一个数字会导致
NaN

当我尝试将变量作为参数传递给嵌套函数时


需要明确的是:count参数与外部函数中定义的
count
变量无关。您没有将变量作为参数传递,因为您没有调用函数,而是在定义它。

这是因为内部函数现在可以访问更局部的变量,所以它没有sn不查看它对“count”变量有权访问的任何闭包。并且没有传递任何内容,因此count是未定义的

这个答案可能有用: