1

我试图围绕something等于返回的匿名函数值的值的事实来思考。我认为通过范围界定它无法访问函数变量。

那么跟注如何something给你 3 的值呢?

 function somefun (x){
     return function(){
         return x;
     }
 }

 var something = somefun (3);
 something();
 //3
4

1 回答 1

2

在 JavaScript 中,函数只是对象,就像其他任何东西一样。函数可以分配给变量。

所以somefun返回一个分配给 的函数something。因此,something是一个函数。

因此,当something()运行时,它会返回一个值,因为它是一个函数。

该函数称为“闭包”。它保留对x值的引用,这就是它返回给您的原因。

于 2013-02-22T16:03:35.287 回答