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。是不是有点抽象啊,是不是似曾相识啊,不错,这玩意和委托差不多!

posted on 2017-02-27 22:51  奔游浪子  阅读(104)  评论(0)    收藏  举报

导航