变量作用域
作用域概念
- 变量可以有效作用的范围
全局变量
- 作用于整个javascript文件的变量,在所有文件中都能被使用
局部变量
- 在js中,只作用于函数体中的变量,只在函数体中有效
变量使用规则
访问规则
- 首先,在自己的作用域中寻找,如果有,就直接拿来用
- 自己的作用域没有,就往上一级作用域寻找,如果有,就直接拿来用,以此类推
- 上一级作用域都没有,就到全局变量作用域中寻找,如果有,就拿来用
- 全局作用域中也没有,就会报错,undefind
赋值规则
- 首先,在自己的作用域中寻找,如果有,就直接赋值
- 自己的作用域没有,就往上一级作用域寻找,如果有,就直接赋值,以此类推
- 上一级作用域都没有,就到全局变量作用域中寻找,如果有,就直接赋值
- 找完所有的作用域都没有找到,那么会给这个变量定义为全局变量,再给他赋值
作用域链
变量访问或赋值时,先在自己的作用域中寻找,没有找到,一层一层向上查找,直至最外层全局变量作用域,像这种层次递进,一层一层向上查找的关系称为作用域链
递归函数
定义
- 在自己的函数体内调用自己,这种函数叫做递归函数
- 后面的结果,是靠前面的结果推导的
- 函数声明及调用
function fn(n){
fn()
}
- 中断递归的条件
if(n==1){
return 0
}
return f(n-1) --------fn与f(n-1)的关系表达,后面结果和前面值的关系