JS:作用域小结
什么是作用域?可访问变量,对象,函数的集合。
具体化:分为全局作用域跟函数作用域
1、所有的全局作用域都是互通的
2、var声明的变量会挂载到window的属性里面,而let、const则不会
3、函数都有自己独立的作用域,外部不能访问,外层函数嵌套内层函数,作用域是包含关系
作用域的规则:
1、搜索规则:子函数(本地) > 父函数(封闭) >全局 从里到外 一层层的来读取
2、作用域,只看声明环境,不看执行环境
let块作用域与var作用域的区别:
可以看出:
1、var 声明的变量是按照 执行完for循环,此时i为10 => 定时器按照for循环次数执行,依次打印此时i的值
2、let 声明的变量则是按照执行一次for循环,立即执行定时器,依次打印出0-9
3、for循环外,可以打印出i此时的值10
4、for 循环外,打印j的值会报错
原因:
let在每次赋值的时候,开创了块作用域,而外部是无法访问块作用域下的变量的,作用域的规则是从里访问到外
落日拉开黑夜的帷幕,繁星点燃黎明的火光。