JS—return 调用 全局变量 局部变量 递归

348 阅读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  ='前锋
//因为全局作用域   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

堆区:一般用于存复杂数据类型,比如函数 ,数组 ,对象等