1.全局作用域
用 var 在全局(函数外)声明的所有变量,都具有全局作用域,即: 网页中所有脚本和函数均可使用。
var carName = " Volvo";
// 此处可调用 carName 变量
function myFunction() {
// 函数内可调用 carName 变量
}
可以理解为:
- carName 是在全局作用域声明的全局变量,在任何地方都可以使用
// 此处可调用 carName 变量
function myFunction() {
carName = "Volvo";
// 此处可调用 carName 变量
}
- 没有声明的变量会自动提升到全局作用域,即为全局变量
2.局部作用域
在函数中用 var 声明的所有变量,都是函数的局部变量,具有局部作用域,即:变量只能在函数内部使用,函数外部是不行的
function myFunction() {
var carName = "Volvo";
// 函数内可调用 carName 变量
}
// 此处调用 carName 变量,就会报错
console.log(carName) // Uncaught ReferenceError: carName is not defined
3.块级作用域
ECMAScript 6(简称ES6)中新增了块级作用域
- 在 ES6 之前,是没有块级作用域的概念的。
- ES6 可以使用
let
关键字或者const
关键字来实现块级作用域。 let
或const
声明的变量只在let
或const
命令所在的代码块 {} 内有效,在 {} 之外不能访问。
{
let x = 2;
}
// 这里不能使用 x 变量
let 关键字声明的变量,只在 let 命令所在的代码块 {} 内有效。
var x = 10;
// 这里输出 x 为 10
{
let x = 2;
// 这里输出 x 为 2
}
// 这里输出 x 为 10