我试图围绕something
等于返回的匿名函数值的事实包围我的大脑。我认为使用范围界定它不会访问函数变量。
那么调用something
如何为您提供值3?
function somefun (x){
return function(){
return x;
}
}
var something = somefun (3);
something();
//3
答案 0 :(得分:2)
在JavaScript中,函数只是对象,就像其他任何东西一样。可以将函数分配给变量。
因此somefun
会返回一个分配给something
的函数。因此,something
是一个函数。
因此,当something()
运行时,它会返回一个值,因为它是一个函数。
该功能称为“闭包”。它保留了x
值的引用,这就是它返回给你的原因。