一个函数,它接受一个参数并返回一个返回该参数的函数

时间:2013-02-22 15:58:40

标签: javascript scope

我试图围绕something等于返回的匿名函数值的事实包围我的大脑。我认为使用范围界定它不会访问函数变量。

那么调用something如何为您提供值3?

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

该功能称为“闭包”。它保留了x值的引用,这就是它返回给你的原因。