Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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_Scope - Fatal编程技术网

Javascript 接受参数并返回该参数的函数

Javascript 接受参数并返回该参数的函数,javascript,scope,Javascript,Scope,我试着把我的头脑集中在一个事实上,某物等于返回的匿名函数值。我认为通过作用域,它将无法访问函数变量 那么调用某物如何得到3的值呢 function somefun (x){ return function(){ return x; } } var something = somefun (3); something(); //3 在JavaScript中,函数只是对象,就像其他任何东西一样。函数可以分配给变量 因此,somefun返回一个函数,

我试着把我的头脑集中在一个事实上,
某物
等于返回的匿名函数值。我认为通过作用域,它将无法访问函数变量

那么调用
某物
如何得到3的值呢

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

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

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

因此,
somefun
返回一个函数,该函数被分配给
something
。因此,
某物
是一个函数

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


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

您的问题是什么?不,这里没有范围问题。我建议读一篇关于javascript作用域/闭包的好文章。好吧,我知道
x
除了
somefun
之外什么都不知道,那么
somefun
现在如何访问
sunfun
@JamieHutber内部的变量呢?正如我所写的,读一篇关于这个问题的好文章。你只是对这项工作的方式/原因有一个错误的概念。请看火箭队的回答:)我读了很多好书。其中道格拉斯先生的好部分。所以它运行的功能,酷。啊,裤子。现在有意义了,因为您将函数赋予了一个变量。我知道这一点。我刚刚放了一个脑屁!