宽屏
1. 作用域
通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域
作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
全局作用域
全局有效,作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件。
局部作用域
局部有效,作用于函数内的代码环境,就是局部作用域。因为跟函数有关系所以也称为函数作用域。
在JavaScript中,根据作用域的不同,变量可以分为:
全局变量
函数外部let 的变量,全局变量在任何区域都可以访问和修改。
局部变量
函数内部let的变量,局部变量只能在当前函数内部访问和修改。
<script> let num = 0 // 全局变量 function fn() { let num = 0 // 局部变量 } </script>
变量有一个坑,特殊情况:
如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐
function fn() { num = 0 } fn() console.log(num) // 0
但是有一种情况,函数内部的形参可以看做是局部变量。
变量访问原则
只要是代码,就至少有一个作用域
写在函数内部的局部作用域
如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
访问原则:在能够访问到的情况下先局部, 局部没有在找全局