作用域详解
一. 了解作用域
二. 作用域分类
三. 作用域的上下级关系
四. 作用域的三大规则
一. 了解作用域
在介绍作用域的定义之前,先解释一下”作用”和”域”的含义
作用:指生效,可以使用
域:范围
总结来说,就是一个变量可以生效的范围。变量不是在所有地方都可以使用的,而这个变量的使用范围就是作用域
二. 作用域分类
1.全局作用域
一个 html 页面就是一个全局作用域,打开页面的时候, 作用域就生成了, 直到关闭页面为止
2.局部作用域(私有作用域)
**只有函数生成私有作用域**
每一个函数就是一个私有作用域
三. 作用域的上下级关系
全局作用域最大, 所有的私有作用域都是再全局作用域下面的,函数生成的私有作用域, 函数写在那个作用域里面,就是哪个作用域的子级。
四.作用域的三大规则
1.变量定义规则
在了解变量定义规则之前,先来说一下变量定义。变量定义需要有 var 关键或者 function 函数名() {}
变量定义规则:
当你在定义一个变量的时候,你把这个变量定义在哪个作用域里面,就只有这个作用域及其后代作用域可以使用,当前作用域的所有祖先级作用域不能使用。
2.变量使用规则
在了解变量使用规则之前,先来说一下变量的使用。使用就是就是当你需要拿到一个变量的值去使用的时候。比如:
变量使用规则:
当你需要使用一个变量的时候
首先, 在自己作用域内部查找, 如果有, 就直接使用, 停止查找
如果没有, 就去上一级作用域查找, 有就使用, 停止查找
如果还没有, 就再去上一级作用域查找, 有就使用, 停止查找
直到全局作用域都没有, 那么就报错 "变量 is not defined"
3.变量赋值规则
在了解变量赋值规则之前,先来说一下变量赋值。变量赋值就是给一个变量进行赋值的操作。比如:
变量赋值规则:
当你需要给一个变量赋值的时候
先在自己作用域内部查找, 如果有, 就给自己作用域内部的变量赋值
如果没有, 就向上一级查找, 如果有就给父级的变量赋值
如果还没有, 就继续向上查找
直到全局作用域都没有, 那么就把这个变量定义为全局变量, 再进行赋值