Spiga

Javascript真谛3——函数的魔力

2008-08-14 18:09:09

  JavaScript的代码就只有function一种形式,function就是函数的类型。当我们写下一个函数的时候,只不过是建立了一个function类型的实体而已。请看下面的程序:

function myfunc()   
{   
    alert("hello");   
};   
alert(typeof(myfunc));  

这个代码运行之后可以看到typeof(myfunc)返回的是function。以上的函数写法我们称之为“定义式”的,如果我们将其改写成下面的“变量式”的,就更容易理解了:

var myfunc = function ()   
{   
    alert("hello");   
};   
alert(typeof(myfunc));  

这里明确定义了一个变量myfunc,它的初始值被赋予了一个function的实体。因此,typeof(myfunc)返回的也是function。其实,这两种函数的写法是等价的,除了一点细微差别,其内部实现完全相同。也就是说,我们写的这些JavaScript函数只是一个命了名的变量而已,其变量类型即为function,变量的值就是我们编写的函数代码体。

  聪明的你或许立即会进一步的追问:既然函数只是变量,那么变量就可以被随意赋值并用到任意地方啰?我们来看看下面的代码:

var myfunc = function ()   
{   
    alert("hello");   
};   
myfunc(); //第一次调用myfunc,输出hello   
  
myfunc = function ()   
{   
    alert("yeah");   
};       
myfunc(); //第二次调用myfunc,将输出yeah