前端小白的JavaScript入门篇—return 调用 全局变量 局部变量 递归

224 阅读2分钟

函数的返回值 return

注意:函数中的 return 只能写在函数的执行语句中

作用1:中断函数内的代码,相当于 循环中的 break

作用2:函数的return 返回的值就是函数调用表达式的值

return 具有函数中断执行的功能

注意:return 后没有值 和 不写 return 函数表达式的值都是 undefined

   function fn(n) //形参 {
           return n+n; 返回n+n的值 4
    }
    var a = fn(2) //实参 实参传递给形参
    console.log(a) //a=4

函数默认返回值

   我们可以不写 return 函数会默认在代码段最后一行 写上 return undefined

什么时候需要写 返回值

   返回值的书写 取决于 是否需要得到函数内部一个变量的值,如果需要 可以使用返回值将其返回,如
   果不需要我们可以不写

函数的作用域分为 全局变量 局部变量

   作用域的概念:表示变量的作用范围
   域用域的分类:全局作用域和局部作用域,分界线就是函数
   局部作用域:表示定义在函数内部的变量,它的作用范围就是局部作用域

作用域:

全局变量:声明在函数外的变量 全局和局部都能使用

   js 给我们提供了一个叫做 window 的全局变量 ,可以理解为 整个 script 标签内的作用域,就是全局变量
   
   var name ='aa'
   //因为全局作用域 window 上有一个属性叫做 name ,所以我们全局变量,要避免起名叫做 name ,尤其是开发的时候
   console.log(window)

局部变量:

声明在函数内的变量 只能在局部使用;
在 js 中,有 且 只有 函数能够创建 局部作用域(函数作用域),局部作用域就开始就是结束位置;
在 局部作用域(函数作用域)内 声明的变量叫做局部变量;
局部变量 不会挂载到 window 对象上

    function fn( ){
        var a = 1;
        console.log( a ); //个人理解:局部变量就是函数声明中定义,在函数中使用
      }
      fn( )
      console.log(a) ( undefined) //因为局部变量在函数声明中定义,函数声明外面使用不到

递归函数

定义:也是函数,只不过该函数是自己调用自己的函数

   function fn(){
       console.log('递归函数');
       //调用自己
       fn()
     }
     fn()
     
   要想写一个正确的递归函数,需要在递归内部,写上 返回点 (到某一个条件时,停止递归)
   

栈区和堆区:

  操作系统会自动将电脑的内存分为 站区和堆区;
  栈区:一般用来存的是基本数据类型的数据 number string boolean ubdefined;
  堆区:一般用于存复杂数据类型,比如函数 ,数组 ,对象等