函数类型

函数function,是一个对象,也是Function类型的一个实例。而函数名,则是指向这个函数对象的一个指针。函数的定义,有两种方法,函数声明和函数表达式。

一、没有重载

如果声明了两个同名函数,则后面的函数会覆盖掉前面的函数。

二、函数声明与函数表达式

解析器会先读取函数声明,然后再执行函数表达式。有点像变量提升。

但是用函数表达式定义的函数,就没有变量提升的功能了,如果函数的调用在函数表达式之前,就会报错。

三、作为值的函数

函数可以作为值来使用。

function compare(attr){
    return function(obj1,obj2){
        var value1=obj1[attr];
        var value2=obj2[attr];
        if(value1>value2){
            return -1;
        }else if(value1<value2){
            return 1;
        }else{
            return 0;
        }
    };
}
var data=[{name:"Alice",age:18},{name:"Tony",age:10},{name:"Wang",age:20}];
var rank=data.sort(compare("age"));
console.log(rank)

上面这段代码,作用是将一组对象,按照对象里面的年龄进行从大到小进行排序。采用的方法是sort方法。sort方法里面传的参数是一个函数。

这个函数在定义的时候,定义的是对象的属性。获取对象的属性,采用的是方括号的方法。obj[attr]。方括号内的值是字符串,所以传入的时候要加双引号。

如果不是用这种方式获取属性值,可以用点后面跟属性值的方法。

 var value1=obj1.attr;

但是由于attr传进来的时候仍然是字符串,所以这种方法得到的value1是undifinde。

对象的属性值获取方法如下:

var obj=[{name:"Alice",age:18},{name:"Tony",age:10},{name:"Wang",age:20}];
console.log(obj[1]["name"]);//Tony
console.log(obj["name"]);//undifined
原文地址:https://www.cnblogs.com/qingshanyici/p/10876562.html