1、作用域:变量在一个使用区间,在这个区间都可使用该变量。
1、全局作用域(变量):在script中声明变量,会挂载到全局对象window上。
2、局部作用域(变量):在函数内部声明的变量的大括号内,不会挂载在window上,只能在当前函数内部。
访问规则:先在自己的当前作用域内查找,如果查找到直接作用,如果没有回向上级作用域查找,不会像下层查找。
作用域链:当前作用域----->父级作用域------>父级的父级作用域----->----->顶层作用域
<script>
//全局作用域范围
var n = 10 //定义全局变量
function fn1(){ //局部变量作用域范围
var m = 20
console.log(n)
} //
fn1()
console.log(window) //全局变量 挂载在window上
console.log(m) //超出局部变量作用于范围后变量不可用
//
</script>
2、递归函数:一个函数在内部调用了它自身,并且设置了结束条件。
条件:1、在内部调用了自身
2、设置了结束条件
function fn(n){
if(n == 1){
return 1
}
return (n * fn(n - 1))
}
var sum = fn(4)
console.log(sum)
/**
* 计算fn(4) 计算4的阶乘 fn(4)== 4 * fn(3)
* 实参:4 传给形参
* 形参:4
* if判断 不满足结束条件,继续执行
* 返回4*fn(3) 调用自身
*
*/