简而言之,Function 是对象而function 是函数。实际上,在JavaScript 中声明一个函数本质上为创建Function 对象的一个实例,而函数名则为实例名。
先看如下的函数:function sayHello(username)
{
alert("Hello "+name);
}
输入参数“NUDT!”。
如果通过创建Function 对象的实例的方式来实现该功能,代码如下:var sayHello = new Function("name","alert('Hello '+name)");
在该方式中,第一个参数是函数sayHello()的参数,第二个参数是函数sayHello()的函数体。定义之后,可通过调用sayHello(“NUDT!”)的方式获得上述的结果。
通过两种构造方式的对比,可以看出所谓的函数只不过是 Function 对象的一个实例,而函数名为实例的名称。
既然函数名为实例的名称,那么就可以将函数名作为变量来使用。
考察如下的代码:function sayHello()
{
alert("Hello");
}
function sayBye()
{
alert("Bye");
}
sayHello = sayBye;
上述代码运行后,再次调用sayHello()函数,返回的是“Bye”而不是“Hello”。