1. 作用域
变量能够起作用的范围,作用域分为全局作用域和局部作用域
全局作用域:
- 1. 最外层函数或者在最外层函数外通过var定义的变量;
- 2. window对象的属性和方法具有全局作用域;
- 3. 在函数内部不通过var来声明的变量具有全局作用域。
局部作用域:
- 1. 在函数内部通过var来声明的变量或者在函数内部定义的函数具有局部作用域;
- 2. 函数的形参具有局部作用域。
×在ES5中,函数是区分局部和全局的唯一的代码块。
×在函数体内,局部变量的优先级高于全局变量。
×全局变量的生存周期从变量定义开始,到页面关闭才会销毁;局部变量在函数执行完销毁。
2. 递归函数
递归函数就是在函数体内部调用自己的函数
//利用递归求阶乘 100! -> 100*99!
//1.定义一个函数,函数的功能是求某个数的阶乘
//2.n - > n * (n-1)! -> …… ->n*(n-1)*……*1!
function jc(n){
if(n==1){
return 1;
}
return n * jc(n-1);
}
var num = jc(5); //5*jc(4)=>5*4*jc(3)=>5*4*3*jc(2)=>5*4*3*2*1
3. 构造函数
构造函数本身也是函数,只不过可以用来创建对象。
构造函数 通过new运算符在函数调用 会得到一个对象