JS中的函数和变量之间说不清的事
在JS中函数很有特点,函数名还是一个函数类型的变量,怎么说呢
function Test()
{
alert("Hello World!");
}
这是一个函数名为Test的函数。
alert(typeof(Test)); 返回的是一个function,这个很合情理
alert(Test);返回的却是整个函数的定义声明

Test(); 返回 Hello World
由此说明,对于一个函数,加上()就是调用,不加的话,就是声明
既然是声明,不妨可以试一下函数名可不可以当做变量来用啊
var t=Test;
alert(t);同alert(Test);
t();同Test();
由此可以知道 函数名就是函数类型的变量,因此
var a=function(){ ...}
好了,有了以上的基础,其实吧,就已经在不知不觉中学会了JS的函数,以后都是在此基础上衍生出来的,比如下面的回调函数,拿函数作为变量去当参数传递。
function Add(a)
{
return 10+a;
}
function Result(x,fun)
{
return x+fun(5);
}
alert(Result(3,Add));
等价于
alert(Result(3,function(x){return 10+x;}));
alert(Result(2,Add));
结果是 17。是不是有点抽象啊,是不是似曾相识啊,不错,这玩意和委托差不多!
浙公网安备 33010602011771号