JS:作用域小结

什么是作用域?可访问变量,对象,函数的集合。

具体化:分为全局作用域跟函数作用域

1576829785(1)

1、所有的全局作用域都是互通的

2、var声明的变量会挂载到window的属性里面,而let、const则不会

3、函数都有自己独立的作用域,外部不能访问,外层函数嵌套内层函数,作用域是包含关系

作用域的规则:

1、搜索规则:子函数(本地) > 父函数(封闭) >全局 从里到外 一层层的来读取

2、作用域,只看声明环境,不看执行环境

let块作用域与var作用域的区别:

image

可以看出:

1、var 声明的变量是按照 执行完for循环,此时i为10 => 定时器按照for循环次数执行,依次打印此时i的值

2、let 声明的变量则是按照执行一次for循环,立即执行定时器,依次打印出0-9

3、for循环外,可以打印出i此时的值10

4、for 循环外,打印j的值会报错

原因:

   let在每次赋值的时候,开创了块作用域,而外部是无法访问块作用域下的变量的,作用域的规则是从里访问到外

闭包详见:https://www.cnblogs.com/hxw1024/p/12070523.html

posted @ 2019-12-20 17:43  浅笑浅语  阅读(304)  评论(0编辑  收藏  举报