函数的返回值 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
堆区:一般用于存复杂数据类型,比如函数 ,数组 ,对象等