函数下

39 阅读2分钟

变量作用域

作用域概念

  • 变量可以有效作用的范围

全局变量

  • 作用于整个javascript文件的变量,在所有文件中都能被使用

image.png

局部变量

  • 在js中,只作用于函数体中的变量,只在函数体中有效

image.png

变量使用规则

访问规则

  1. 首先,在自己的作用域中寻找,如果有,就直接拿来用
  2. 自己的作用域没有,就往上一级作用域寻找,如果有,就直接拿来用,以此类推
  3. 上一级作用域都没有,就到全局变量作用域中寻找,如果有,就拿来用
  4. 全局作用域中也没有,就会报错,undefind

image.png

image.png

赋值规则

  1. 首先,在自己的作用域中寻找,如果有,就直接赋值
  2. 自己的作用域没有,就往上一级作用域寻找,如果有,就直接赋值,以此类推
  3. 上一级作用域都没有,就到全局变量作用域中寻找,如果有,就直接赋值
  4. 找完所有的作用域都没有找到,那么会给这个变量定义为全局变量,再给他赋值

image.png

作用域链

变量访问或赋值时,先在自己的作用域中寻找,没有找到,一层一层向上查找,直至最外层全局变量作用域,像这种层次递进,一层一层向上查找的关系称为作用域链

递归函数

定义

  • 在自己的函数体内调用自己,这种函数叫做递归函数
  • 后面的结果,是靠前面的结果推导的
  • 函数声明及调用
function fn(n){
    fn()
    }
  • 中断递归的条件
  if(n==1){
      return 0
  }
  return f(n-1) --------fnf(n-1)的关系表达,后面结果和前面值的关系

image.png

运行原理

image.png