函数自调用(递归函数)

104 阅读1分钟

-函数自调用:函数在内部可以调用其本身

函数自调用很容易发生"栈溢出"错误(stack overflow),首页必须要加退出条件return

function fn() {
    fn()
  }
  fn()

image.png

  • 函数自调用可以实现循环的作用
  var n=1
  function fn() {
    console.log(n)
    if (n==6) {
      return
    }//必须要有跳出自调用的条件,这里是n为6时结束自调用
    n++;
    fn()
  }
  fn()
   /*  for(n=1;n<7;n++){
    console.log(n)//与for循环效果一样
  } */

image.png

  • 用函数自调用遍历数组比for循环简单,因为不知道数组的嵌套多少层,for循环一层层遍历下去很麻烦
 var arr=[[16,[2,3,4,5]],[4,54,2,6],[23,45,[34,6,7,3]]]
  function fn(arr){
    for(var i=0;i<arr.length;i++){
      if(typeof(arr[i])=="number"){
     console.log(arr[i])
   }else{
     fn(arr[i])
   }
    }
  }
  fn(arr)

image.png

image.png