作用域相关知识点
一、作用域分类
1. 全局作用域
一个 html 页面就是一个全局作用域
打开页面的时候, 作用域就生成了, 直到关闭页面为止
2. 局部作用域(私有作用域)
性质:只有函数生成私有作用域
每一个函数就是一个私有作用域
二、作用域的上下级关系
(1)全局作用域最大, 所有的私有作用域都是在全局作用域下的
(2)函数写在哪个作用域里面,就是哪个作用域的子级
三、作用域有三大规则:
1. 变量定义规则
当你在定义一个变量的时候,你把这个变量定义在哪个作用域里面,就只有这个作用域及其后代作用域可以使用,当前作用域的所有祖先级作用域不能使用
2. 变量使用规则
你需要使用一个变量的时候
(1)首先, 在自己作用域内部查找, 如果有, 就直接使用, 停止查找;
(2)如果没有, 就去上一级作用域查找, 有就使用, 停止查找;
(3)如果还没有, 就再去上一级作用域查找, 有就使用, 停止查找;
(4)直到全局作用域都没有, 那么就报错 “变量 is not defined”。
3. 变量赋值规则
你需要给一个变量赋值的时候
(1)先在自己作用域内部查找, 如果有, 就给自己作用域内部的变量赋值
(2)如果没有, 就向上一级查找, 如果有就给父级的变量赋值
(3)如果还没有, 就继续向上查找
(4)直到全局作用域都没有, 那么就把这个变量定义为全局变量, 再进行赋值