javascript概念简讲(3)-作用域

128 阅读1分钟

简单概念

  • 作用域 存放变量的空间,使变量不用外泄
  • 词法作用域 根据源代码来决定的作用域
  • 块作用域 花括号以内空间关键字声明let,const
  • 作用域链 可以往外层找到父词法作用域
  • 调用堆栈 栈结构,函数调用会把函数地址记录到栈中返回弹出
  • 变量提升 变量跟函数声明会提升到顶部,如果大学学过c语言会发现,c语言是调用必需要在声明前面,js做了特殊处理
  • 执行上下文 JavaScript 代码被解析和执行时所在环境的抽象概念
  • 闭包 在函数里边的声明的函数调用时候可以记住外层函数的环境变量

变量提升现象

js运行一段代码做了两部操作

  • 第一步 解析声明然后把声明记录起来,等同于把变量名存储起来然后赋值为undefined
  • 第二部 执行代码,这时候先与声明调用这个值是undefined

闭包现象

外层函数调用时候里层函数根据词法作用域找到父作用域并且记录,然后调用时后引用父作用域。