JS:作用域小结

Posted 浅笑浅语

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于JS:作用域小结的主要内容,如果未能解决你的问题,请参考以下文章

函数作用域小结

javascript 变量,作用域,内存管理小结

javascript函数及作用域的小结

JavaScript系统学习小结——变量作用域和内存问题

函数和装饰器

js 静态作用域和动态作用域