JavaScript函数

//找到所有的header,取得它们id的映射,转换为数组并对它们进行排序
$(" :header ").map(function() {return this.id}).get().sort();

可选形参

function getPropertyNames(o, /* optional */ a){
    if(a=== undefined) a=[];//如果未定义,则使用新数组
    for(var property in o)a.push(property);
    return a;
}
//这个函数调用可以传入1个或2个实参
var a=getPropertyNames(o);//将o的属性存储到一个新数组中
getPropertyNames(p,a);//将p的属性追加至数组a中

可变长的实参列表

function max(/* ... */){
    var max=Number.NEGATIVE_INFINITY;
    for (var ij=0;i< arguments.length; i++){
        if(arguments[i]>max)max=arguments[i];
            return max;
    }
}
var largest=max(1,10,100,2,3,1000,4,5,10000,6);

JavaScript函数的执行用到了作用域链,这个作用域链是函数定义的时候创建的。嵌套的函数f()定义在这个作用域链里,其中的变量scope一定是局部变量,不管任何时候执行函数f(),这种绑定在执行f()时依然有效。

var uniqueInteger=(function() { //定义函数并立即调用
    var counter=0; //函数的私有状态
    return function(){ return counter++;}
})

call()和apply()
对于call(),第一个调用上下文实参后所有实参就是要传入待调用函数的值。
f.call(o,1,2);
对于apply(), apply()方法和call()类似,但传入实参的形式和call()有所不同,它的实参都放入一个数组当中:
f.apply(o,[1,2]);

你可能感兴趣的:(JavaScript)