1.变量作用域
变量可以访问的范围。分为全局作用域和局部作用域。
- 全局作用域,在全局作用域中定义的变量可以在任何地方使用
- 局部作用域,在局部作用域中定义的变量只能在这个局部作用域内部使用
<script>
//全局作用域,在全局作用域中定义的变量可以在任何地方使用
var a=100
function fn(){
//局部作用域,只能在函数里面使用
var b=200
}
</script>
2.变量使用规则
(1)访问规则
- 首先在自己作用域查找,如果有定义,直接用
- 如果没有,就去上一级作用域查找,以此类推,直到查找到
- 如果一直到全局作用域还没查找到的话,就会直接报错(is not defined)
(2)赋值规则
- 首先在自己的作用域查找,如果有就直接赋值,没有就去上一级查找
- 如果到全局作用域都没有,那这个变量会定义为全局变量,在给它赋值
3.作用域链
变量访问和赋值时,层层查找关系就叫做作用域链。