1. 作用域指的是您有权访问的变量(对象和函数也是变量)集合。
2. JavaScript函数作用域
2.1. 在JavaScript中有两种作用域类型:
- 局部作用域
- 全局作用域
2.2. JavaScript拥有函数作用域: 每个函数创建一个新的作用域。事实上代码块{}也可以创建一个作用域, 只不过代码块一般用于函数。
2.3. 作用域决定了这些变量的可访问性(可见性)。
2.4. 函数内部定义的变量在函数外部是不可访问的(不可见的)。
3. 局部变量
3.1. 在JavaScript函数中声明的变量, 会成为函数的局部变量。
3.2. 局部变量只能在函数内访问。
3.3. 由于局部变量只能被其函数识别, 因此可以在不同函数中使用相同名称的变量。
3.4. 局部变量在函数开始时创建, 在函数完成时被删除。
3.5. 实例
// 此处的代码不能使用carName
function myFunction() {
var carName = "Volvo";
// 此处的代码可以使用carName
}
4. 全局变量
4.1. 函数之外声明的变量, 会成为全局变量。
4.2. 全局变量的作用域是全局的: 网页的所有脚本和函数都能够访问它。
4.3. 实例
var carName = "porsche";
// 此处的代码能够使用carName变量
function myFunction() {
// 此处的代码也能够使用carName变量
}
5. 自动全局
5.1. 如果您为尚未声明的变量赋值, 此变量会自动成为全局变量。
5.2. 这段代码将声明一个全局变量carName, 即使在函数内进行了赋值。
myFunction();
// 此处的代码能够使用carName变量
function myFunction() {
carName = "porsche";
}
5.3. 在"严格模式"中不会自动创建全局变量。所有现代浏览器都支持以"严格模式"运行JavaScript。
6. 全局对象
6.1. 在web浏览器中, 全局对象就是浏览器对象(window)。
6.2. 所有全局变量均属于window对象。
6.3. 如果一个函数不是JavaScript对象的方法, 那么它属于window对象的函数。
7. JavaScript变量的有效期
7.1. JavaScript变量的有效期始于其被创建时。
7.2. 局部变量会在函数完成时被删除。
7.3. 全局变量会在您关闭页面是被删除。