1 //我要弹出4, 2 function func1(){ 3 return function(x){return x+1} 4 } 5 6 alert(func1(3)) //结果是:function(x){return x+1} 7 8 //但是将 func1()赋值给一个变量,就可弹出4 9 function func1(){ 10 return function(x){return x+1} 11 } 12 var get=func1(); 13 alert(get(3)) //4 14 15 16 为什么要先将 func1()赋值给一个变量,才可弹出4,各位帮忙解惑一下,谢谢
鉴于楼主比较坑,代码前面还加了行号,所以我弄了一段没有行号的。
<html> <header> <script language="javascript"> function func1(){ return function(x){return x+1} } alert(func1()(3)) //结果是:4 //但是将 func1()赋值给一个变量,就可弹出4 function func1(){ return function(x){return x+1} } var get=func1(); alert(get(3)); //4 </script> </header> <body> </body> </html>
你自己看着办吧。
谢谢啊,加了行号不好意思啊,为了看着方便。
alert(func1()(3)) //结果是:4
这个意思是说,让func1()执行会返回function(x){return x+1},然后(3)就是赋给X了吗?
@wstpa:
<html> <header> <script language="javascript"> function func2(x){ return x+1; } alert(func2(3)) //结果是:4 //但是将 func1()赋值给一个变量,就可弹出4 function func1(){ return function(x){return x+1} } var get=func1(); alert(get(3)); //4 </script> </header> <body> </body> </html>
你自己比较一下吧,你那个Function比较坑,不是一个直接的函数,而是函数的指针。(差不多是这个意思,可能不同语言里面的表达不同吧)
有点象以前C语言里面的指针的指针的指针....专门用来坑人不偿命的...
@爱编程的大叔: 大概懂了,谢谢你。我现在得先去查资料弄懂函数的指针去了,,没弄懂,在请教你啊,谢谢了
因为你fun1函数返回值也是一个函数,你返回一个函数当然不会自动执行了,赋值之后,变量get是内部那个函数,你再调用get(3),当然就有效了。
可以简化为:fun1()(3)。。
懂了,谢谢你
你的方法里面又嵌套一个方法,所以只有调用2次才会出现结果:4
var get=func1(); // 调用返回方法里嵌套的方法体
alert(get(3)); // 执行嵌套的方法体
方法定义你可以这样
1) function Add(x,y) {
return x+y;
}
2) var Add = function(x,y) {
return x+y;
}