你以为你很懂JavaScript作用域?看完这篇再说(全栈老李出品)
🧑🏫 作者:全栈老李
📅 更新时间:2025 年 5 月
🧑💻 适合人群:前端初学者、进阶开发者
🚀 版权:本文由全栈老李原创,转载请注明出处。
今天咱们聊聊JavaScript里那个看似简单实则暗藏玄机的东西——作用域。每次面试问到"说说作用域链",十个候选人里有八个会背"函数创建时会生成作用域链",但你要是追问"那为什么闭包能访问外部变量",有一半人就开始支支吾吾了。(全栈老李温馨提示:这篇文章建议搭配咖啡食用,效果更佳)
作用域到底是什么鬼?
想象你住在一个小区里(全局作用域),你家有个保险箱(局部作用域)。小区保安认识所有住户(全局变量),但不知道你家保险箱密码(局部变量)。这就是最朴素的作用域理解——变量在哪能访问,在哪不能访问。
但JavaScript的作用域可不止这么简单。来,看个代码:
// 全局作用域 - 全栈老李友情提示:这里就像小区大门
const communityName = "幸福里小区";
function checkIn() {
// 函数作用域 - 相当于你家门禁
const roomNumber = "902";
console.log(`欢迎来到${
communityName} ${
roomNumber}室`);
function openDoor() {
// 嵌套函数作用域 - 相当于你家保险箱
const password = "123456";
console.log(`正在用密码${
password}打开