js权威指南——函数摘要

js是弱类型语言,在形参和实参数目可以不一致,通过arguments获取

var max = function () {
    for (var i = 0; i < arguments.length; i++) {
        console.log(arguments[i]);
    }
    console.log(arguments.caller);
    console.log(arguments.callee);
    console.log("in max");
}

var large = max(1, 2, 3, 4, 5, 6);

arguments.callerarguments.callee分别是调用当前函数的函数和当前正在执行的函数。caller是非标准的。

js中函数也能添加属性:

var mf = function () {
    console.log("in mf");
    console.log(mf["zly"]);
}

mf["zly"] = "polo";
mf();

直接执行的匿名函数写法,一般多用作闭包,返回一个函数:

( function clF (p1, p2) { console.log(p1); console.log(p2); } (1, 2) );

下面的,就是直接返回的函数:

extend = (function () {
    return function () {
        console.log(" this is extend. ");
    }
} () );

extend();

利用闭包来保存局部变量:

var uniqueInteger = (function () {
    var count = 0;
    return function () {
        return count++;
    }
} ());

console.log(uniqueInteger());
console.log(uniqueInteger());
console.log(uniqueInteger());

js中的闭包:
js权威指南——函数摘要_第1张图片

js中的函数依附于函数调用链,函数调用链包含函数域和函数体。
函数执行的域是声明时的域。
详见:P184 javascript权威指南 第六版。

你可能感兴趣的:(JavaScript)