1:作用域:
- javaScript作用域属于词法作用域,词法作用域又叫做静态作用域,它就是定义在词法阶段的作用域(变量和函数的可访问范围)。
1-1:全局作用域:
全局作用域,所声明的所有变量都会作为window对象挂载的值
1-2:函数作用域
函数内部申明的变量被称为函数作用域或者局部作用域
1-3:块级作用域
用let / const 申明的变量存在会计作用于,只在 大括号 {} 中有效
闭包:
函数内部的函数,能够读取其他函数内部作用域的值就会产生闭包
function foo(){
let a = 1;
return function(){
console.log(a)
}
}
const bar = foo();
bar() // function(){console.log(a)} 是 foo 的 闭包函数
作用域链
当进行变量赋值的时候,在当前作用域找不到该变量的时候,就会在上级函数进行查找,如果没有找到就报错undefined