全局作用域:世界的起点
var globalVar = "我在全局"
function checkGlobal() {
console.log(globalVar) // 我在全局
}
函数作用域:独立的王国
function myFunction() {
var secret = "内部变量"
console.log(secret) // 可访问
}
console.log(secret) // ReferenceError: 不可访问
块级作用域:ES6的革命
if (true) {
let blockScoped = "仅存在于此块"
const alsoBlockScoped = "我也是"
}
console.log(blockScoped) // ReferenceError
作用域链:寻找的足迹
function outer() {
const outerVar = "外部"
function inner() {
console.log(outerVar) // 沿作用域链向上查找
}
inner()
}
变量提升:隐藏的陷阱
console.log(hoisted) // undefined
var hoisted = "我被提升了"
console.log(notHoisted) // ReferenceError
let notHoisted = "我不会被提升"
理解JavaScript作用域是掌握这门语言的关键,它影响着变量生命周期、内存管理和代码结构设计。通过合理利用不同作用域特性,可以编写出更健壮、可维护的应用程序。