作用域指的是有权访问的变量集合
javaScript 有两种作用域类型: 全局作用域 和 局部作用域
javaScript 拥有函数作用域(局部作用域):每个函数创建一个新的作用域
作用域决定了这些变量的可访问性(可见性)
函数内部定义的变量 从函数外部是不可访问的(不可见的)
1.全局变量: 在全局作用域下的变量 在全局下都可以使用
ps: 在函数内部 未声明的变量 也属于全部变量
<script>
var num = 123;
console.log(num);
function fn(){
console.log(num);
num1 = '我没有声明';
}
fn();
console.log(num1);
</script>
// 输出的结果为 123
// 123
// 我没有声明
2.局部变量 在函数内部的变量 就是局部变量
ps: 函数的形参 也可以看做是局部变量
<script>
function fn(aru){
var num = 123;
}
fn();
console.log(num);
console.log(aru);
</script>
// 报错 num is not defined
// 报错 aru is not defined
javaScript 块作用域
通过 var 关键词声明的变量没有块作用域
在块{}内声明的变量可以从块之外进行访问
<script>
{
var x = 6
}
console.log(x);
</script>
//输出结果为 6
通过 let 关键词声明的变量有块作用域的变量
在块{}内声明的变量无法从块外访问
<script>
{
let x = 6
}
console.log(x);
</script>
// x is not defined