1. 全局作用域:
在全局范围内声明的变量拥有全局作用域,即它们可以在整个代码中访问。
var globalVar = "I am a global variable";
function globalFunction() {
console.log(globalVar);
}
globalFunction(); // 输出 "I am a global variable"
2. 局部作用域:
在函数内部声明的变量拥有局部作用域,即它们只能在函数内部访问。
function localFunction() {
var localVar = "I am a local variable";
console.log(localVar);
}
localFunction(); // 输出 "I am a local variable"
// console.log(localVar); // 这里会报错,因为 localVar 不在这个作用域内
3. 块级作用域(ES6引入):
在使用 let 或 const 声明变量时,它们会拥有块级作用域,即在代码块(如 {})内部声明的变量只能在该块内部访问。
if (true) {
let blockVar = "I am a block-scoped variable";
console.log(blockVar);
}
// console.log(blockVar); // 这里会报错,因为 blockVar 不在这个作用域内
4. 函数作用域和变量提升:
在 JavaScript 中,函数作用域指的是函数内声明的变量在整个函数内部都是可见的。另外,JavaScript 存在变量提升,即在函数内部的任何位置声明的变量都会被提升到函数的顶部,但是它们的赋值并不会提升。
function example() {
console.log(myVar); // 输出 undefined,而不是报错
var myVar = 42;
console.log(myVar); // 输出 42
}
example();
5. 闭包与作用域链:
闭包是指函数可以访问其声明外部的变量,即使在外部函数执行完毕后仍然可以访问这些变量。这是由于 JavaScript 中的作用域链机制。
function outerFunction() {
var outerVariable = "I am from outer function.";
function innerFunction() {
console.log(outerVariable);
}
return innerFunction;
}
var closure = outerFunction();
closure(); // 输出 "I am from outer function."
以上是关于 JavaScript 作用域的基础知识。理解作用域是编写正确、可维护和可读代码的重要一环。
转载请注明出处:http://www.pingtaimeng.com/article/detail/12782/JavaScript