Javascript函数详解

来源:互联网 发布:网络诈骗金额多少年 编辑:程序博客网 时间:2024/05/01 00:49

javascript函数详解

js中的函数是对象,每个函数都是Function类型的实例,函数名只是一个指向函数对象的指针,不会和函数绑定。js函数声明方法如下:

//方法一function sum(num1,num2){    return num1+num2;}//方法二var sum = function(num1,num2){    return num1+num2;};  //注意分号,sum是函数的引用//方法三var sum = new Function("num1","num2","return num1+num2") //不推荐

函数名是指向函数的指针,也就是说一个函数可以有多个指针指向它

function sum(num1,num2){    return num1+num2;}var anotherSum = sum;sum = null;alert(anotherSum(10,10)); //20

Js的函数没有重载的概念

function addSomeNumber(num){    return num + 100;}function addSomeNumber(num){    return num +200;}alert(addSomeNumber(100)); //300 第二个会覆盖第一个

函数声明和函数表达式

alert(sum(10,10));function sum(num1,num2){    return num1+num2;}//可以正常运行,js解析器会通过一个名为函数声明提升的过程,把函数放到前面alert(sum(10,10));var sum = function(num1,num2){    return num1+num2;}//错误!函数位于一个初始化的语句中

函数可以当做参数传递,也可以将一个函数作为另一个函数的返回值返回,典型的列子是:对象数组排序问题(以某个属性排序)

function createComparisonFunction(propertyName){    return function(object1,object2){        var value1 = object1[propertyName];        var value2 = object2[propertyName];        if(value1 < value2){            return -1;//置前        }else if(value1 > value2){            return 1; //置后        }else{            return 0; //相等        }    }}var data = [{name:"zs",age:20},{name:"nb",age:23}];data.sort(createComparisonFunction("name"));alert(data[0].name); //nb

关于sort的方法可以参考我之前的文章ECMAScript引用类型之Array类型

1 0