1、函数的定义数组
一、通常函数ide
//通常函数
//定义函数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)
二、匿名函数函数
/* 匿名函数 两个数比较 */ //声明匿名函数 f2 = function (x, y) { if (x > y){ return x; }else { return y; } } //调用匿名函数 ret = f2(5, 10); console.log("最大值为:", ret);
三、直接执行函数spa
/* 直接执行函数 求和 */ ret = (function (x, y ) { // console.log(x+y) return x+y; })(1, 2); console.log(ret);
2、函数中的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);
3、局部变量和全局变量生命周期
局部变量:在函数内部定义的变量作用域
全局变量:函数外部声明的变量it
生命周期:局部变量,函数执行结束;全局变量,关闭网页io
4、做用域console
局部->全局
/* 做用域 */ var name = "tom"; function f1() { function inner() { var name = "joker" console.log(name); } return inner; } ret = f1(); ret(); // 结果:joker
5、词法分析(了解)
一、过程
语义分析->执行代码
二、词法分析
当函数调用的前一瞬间,会先造成一个激活对象:Avtive Object(AO),并会分析如下3个方面:1:函数参数,若是有,则将此参数赋值给AO,且值为undefined。若是没有,则不作任何操做。2:函数局部变量,若是AO上有同名的值,则不作任何操做。若是没有,则将此变量赋值给AO,而且值为undefined。3:函数声明,若是AO上有,则会将AO上的对象覆盖。若是没有,则不作任何操做。函数内部不管是使用参数仍是使用局部变量都到AO上找。