域名查询 站长查询,哈尔滨城市建设局网站,包装纸箱公司怎么做网站,上海知名公司当然#xff01;可以用几个生活中的比喻来形象地解释变量提升#xff1a; 1. 书架的占位符 想象你有一个书架#xff0c;但还没放书。 • 变量提升#xff08;var#xff09;#xff1a;
你先在书架上贴了一个标签#xff08;比如写“我的书”#xff09;可以用几个生活中的比喻来形象地解释变量提升 1. 书架的占位符 想象你有一个书架但还没放书。 • 变量提升var
你先在书架上贴了一个标签比如写“我的书”但暂时没放书。别人看到标签会问“这里有什么书”你回答“还没有书undefined。” 等你后来放了一本书赋值别人才能拿到。 javascript
复制
console.log(我的书); // 输出 undefined标签存在但没书
var 我的书 JavaScript指南;
• let/const的暂时性死区
你同样贴了标签但告诉别人“这里还没准备好别碰”报错。直到你放书后别人才能看。 javascript
复制
console.log(我的书); // 报错标签存在但禁止访问
let 我的书 JavaScript指南; 2. 建筑工地的水泥地基 盖楼时先打地基声明变量但还没建楼层赋值。 • var
地基已经打好但楼板还没铺。你踩上去会掉下去得到undefined。 • let/const
地基打了但围了警戒线暂时性死区。你提前踩进去会摔跤报错。 javascript
复制
console.log(楼层); // 掉下去undefined
var 楼层 3; console.log(楼层); // 摔跤报错
let 楼层 3; 3. 行李箱的打包顺序 你整理行李时 • var
先写了个行李标签声明变量但包里还没装东西。别人打开行李箱时看到标签但里面是空的undefined。 • let/const
标签贴了但强行打开行李箱会锁住报错。必须等装好东西赋值才能查看。 javascript
复制
console.log(牙刷); // 空标签undefined
var 牙刷 软毛; console.log(牙刷); // 锁住行李箱报错
let 牙刷 软毛; 4. 函数声明像“现成的快递” 函数声明会被整体提升就像网购了一件商品直接送到你家可以直接用 javascript
复制
快递(); // 收到包裹直接拆开用
function 快递() { console.log(商品到了);
}
而函数表达式如箭头函数像“需要组装的家具” javascript
复制
快递(); // 报错“零件还没到”
var 快递 () { console.log(商品到了);
}; 总结比喻 • 变量提升像“占位符”或“未完成的快递”声明存在但内容未就绪。
• var占位符允许你查看得到undefined。
• let/const占位符禁止查看报错直到赋值完成。
• 函数声明像“现成的礼物”直接可用。
通过这些比喻是不是更容易理解变量提升的“时间差”和不同声明方式的区别