推荐热点事件
你不知道的Javascript(上卷) | 第一章难点与细节解读(作用域是什么?)
刚翻开书的人可能觉得这玩意儿像空气,看不见摸不着,但代码跑起来全指着它活。打个比方,作用域就是小区快递柜:你输入正确的取件码(变量名),柜门(内存地址)啪嗒弹开,包裹(数据)才能到手。输错了?系统直接甩你一脸“查无此件”。
书里把作用域链比作多层套娃。函数里头套函数,就像俄罗斯大妈手里的彩绘木偶,剥开一层还有一层。里头的娃娃能伸手掏外头的花纹,外头的却摸不到内衬的暗纹。这种“里看外容易,外看里没门”的规矩,就是所谓词法作用域。
变量提升像个爱抢跑的小学生。 `var`声明的变量总在代码执行前被悄悄拎到作用域顶部,赋值却老实按顺序来。这导致有人写了`console.log(a)`才声明`var a=1`,结果打印出`undefined`——不是报错,是JavaScript在后台玩了个时间差。
闭包被作者称作“穿越时空的背包客”。函数带着出生时的作用域浪迹天涯,哪怕老家(外层函数)早拆迁了,它仍能从背包里掏出当年的旧地图(变量)。这种机制既能藏隐私数据,又能让回调函数记住“自己从哪儿来”。
书中特意点破`with`和`eval`这类“作用域破坏王”。它们像在快递柜上强行凿洞,可能让系统错乱。如今严格模式干脆把这俩送进黑名单,倒也省心。
作用域像本隐形的户口簿,变量在哪注册,能活多久,全写在里头。搞明白这个,代码里的“找不到”“重名了”之类的幺蛾子,少说能少踩八成坑。
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://carzhishi.com/rdsj/15186.html