作用域
作用域(scope)
- 作用域指的是一个变量的可见区域
- 作用域有两种:
- 全局作用域
- 全局作用域在网页运行时创建,在网页关闭时销毁
- 所有直接编写到script标签中的代码都位于全局作用域中
- 全局作用域中的变量是全局变量,可以在任意位置访问
- 局部作用域
- 块作用域
- 块作用域是一种局部作用域
- 块作用域在代码块执行时创建,代码块执行完毕它就销毁
- 在块级作用域中声明的变量时局部变量,只能在块内部访问,外部无法访问
- 函数作用域
- 函数作用域也是一种局部作用域
- 函数作用域在函数调用时产生,调用结束后销毁
- 函数每次调用都会产生一个全新的函数作用域
- 在函数中定义的变量时局部变量,只能在函数内部访问,外部无法访问
- 块作用域
- 全局作用域
作用域链
- 当我们使用一个变量时,JS解释器会优先在当前作用域中寻找变量
- 如果找到了则直接使用、
- 如果没找到,则去上一层作用域中寻找,找到了则使用
- 如果没找到,则继续去上一层寻找,以此类推
- 如果一种到全局作用域都没找到,则报错 xxx is not defined
let a = 10;
{
let a = "第一代码块中的a";
{
let a = "第二代码块中的a";
console.log(a); // "第二代码块中的a"
}
}