javascript 函数

一、函数的定义

1、一般函数

//一般函数
//
定义函数f1 function f1(x, y) { console.log("x的值:", x) console.log("y的值:", y) return x+ y; } //调用函数f1 ret = f1(10, 15) console.log("x+y=",ret)

2、匿名函数

/*
匿名函数
两个数比较
 */
//声明匿名函数
f2 = function (x, y) {
    if (x > y){
        return x;
    }else {
        return y;
    }
}
//调用匿名函数
ret = f2(5, 10);
console.log("最大值为:", ret);

3、直接执行函数

/*
直接执行函数
求和
 */
ret = (function (x, y ) {
    // console.log(x+y)
    return x+y;
})(1, 2);
console.log(ret);

二、函数中的arguments

/*
函数中的arguments
arguments可以看成一个数组,所有的实参都在这里
 */
//定义函数
function f2(x, y) {
    console.log(arguments.length);
    for( var i=0 in arguments){
        console.log(arguments[i]);  //属性[变量名称]
    }
}
//调用函数
f2(5,4, 3, 4);

三、局部变量和全局变量

局部变量:在函数内部定义的变量

全局变量:函数外部声明的变量

生命周期:局部变量,函数执行结束;全局变量,关闭网页

四、作用域

局部->全局

/*
作用域
 */
var name = "tom";
function f1() {
    function inner() {
        var name = "joker"
        console.log(name);
    }
    return inner;
}

ret = f1();
ret();
// 结果:joker

五、词法分析(了解)

1、过程

语义分析->执行代码

2、词法分析

当函数调用的前一瞬间,会先形成一个激活对象:Avtive Object(AO),并会分析以下3个方面:
1:函数参数,如果有,则将此参数赋值给AO,且值为undefined。如果没有,则不做任何操作。
2:函数局部变量,如果AO上有同名的值,则不做任何操作。如果没有,则将此变量赋值给AO,并且值为undefined。
3:函数声明,如果AO上有,则会将AO上的对象覆盖。如果没有,则不做任何操作。
函数内部无论是使用参数还是使用局部变量都到AO上找。

原文地址:https://www.cnblogs.com/wt7018/p/11154472.html