Javascript学习篇:引用类型——Function类型(1)

 -  Function 类型

函数实际上是对象。每个函数都是Function类型的实例,而且具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。

函数通常是使用函数声明语法定义的:

function sum(num1,num2){

return  num1+num2;

}

这与下面使用函数表达式定义函数的方式几乎相差无几。

var sum = function(num1,num2){

return num1+num2;

};

使用函数表达式定义函数时,没有必要使用函数名。另外还要注意函数末尾有一个分号,就像声明其他变量时一样。

最后一种定义函数的方式是使用function构造函数。构造函数可以接收任意数量的参数,但最后一个参数始终都被看成是函数体,而前面的参数则枚举出了新函数的参数。

函数名仅仅是指向函数的指针,因此函数名与包含对象指针的其他变量没什么不同。换句话说,一个函数可能会有多个名字:

function sum(num1,num2){

return num1+num2;

}

alert(sum(10,10));    //20

var anotherSum = sum;

alert(anotherSum(10,10));   //20

sum = null;

alert(anotherSum(10,10));   //20

使用不带圆括号的函数名是访问函数指针,而非调用函数。此时,anotherSum和sum就都指向了同一个函数,因此anotherSum()也可以被调用并返回结果。即使将sum设置为null。让它与函数“断绝关系”,但仍可以正常调用anotherSum()。

  没有重载(深入理解)

将函数名想象为指针,有助于理解为什么ECMAScript中没有重载的概念。

function addSomeNumber(num){

return num+100;

}

function addSomeNumber(num){

return num+200;

}

var result =addSomeNumber(100); //300

例子中声明了两个同名函数,而结果是后面的函数覆盖了前面的函数。和下面代码实际无区别

var addSomeNumber = function (num){

return num+100;

};

addSomeNumber = function(num){

return num+200;

}

var result = addSomeNumber(100); //300

陈健的个人博客,记录生活所见所感、学习笔记。专注于Web前端_SEO教程_读书心得。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

返回主页看更多
狠狠的抽打博主 支付宝 扫一扫