作业域:我们可以简单的理解为 一个函数的方法体内就是一个作业域,
块级作用域: { },内表示块级作用域,比如 for循环的{ }
作用域链:和原型链 差不多,当一个访问一个变量时,会就近查找一个作用域,如果没有会沿着作业域链,一级一级的往上查找,
以上个人理解,如有错误,欢迎指出
var 适用 整个作用域,let const 适用块级作用域
function test() { for(var i=0 ;i<5;i++) { // const n= i var m= 9 } for(let j=0 ;j<5;j++) {} // var 申明的变量 在 函数test 作用域内 都可以访问,而 let const 申明的变量 只能在块级作用域内访问 console.log(i) // 可以访问 console.log(m) // 可以访问 console.log(j) // 不可以访问 console.log(n) // 不可以访问 }