作用域和递归函数

60 阅读1分钟

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)    调用自身
     *  
    */