Javascript函数详解

23 篇文章 0 订阅
22 篇文章 0 订阅

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值