Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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_Function - Fatal编程技术网

有人能用javascript告诉我们这个闭包函数的流程吗

有人能用javascript告诉我们这个闭包函数的流程吗,javascript,function,Javascript,Function,请告诉我它的流程 function multiplier(factor) { return function(number) { return number * factor; }; } var twice = multiplier(2); console.log(twice(5)); // → 10 第一个函数返回另一个函数,基本上如下所示: function(number) { return number * 2; } 因为它从外部

请告诉我它的流程

function multiplier(factor) {  
  return function(number) {  
    return number * factor;  
  };  
}  
var twice = multiplier(2);  
console.log(twice(5));  
// → 10  

第一个函数返回另一个函数,基本上如下所示:

function(number) {
    return number * 2;
}

因为它从外部范围“记住”了
因子
参数。然后这个返回的函数被简单地应用于参数5。

当您调用乘数函数时,它返回另一个函数

function(number) {  
   return number * 2;   
}; 
现在“tweep”是一个函数,具有上面的函数表达式

所以,当您使用参数5调用两次函数时。i、 e两次(5),返回“10”

每个人都有一个疑问,就是“因子”变量即使在乘数函数的作用域之外,它是如何仍然存在的

这是因为JavaScript中的词法作用域,即外部函数变量可用于内部函数

由于返回语句中使用了“factor”,javascript解析器必须为其内部函数保留其值。这叫做闭包


Simply Closure是一个具有扩展内存的函数。

在这两个函数中添加一个
console.log
,请参阅。。。