javascript 关于局部变量和全局变量
js中函数运行过程不仅仅是单纯的局部变量覆盖全局变量。和函数里面的声明情况有关。
比方:
<script> var a =1; function test(){ alert(a); //a为undefined! 这个a并非全局变量。这是由于在function scope里已经声明了(函数体倒数第4行)一个重名的局部变量, //所以全局变量a被覆盖了。这说明了Javascript在运行前会对整个脚本文件的定义部分做完整分析,所以在函数test()运行前, //函数体中的变量a就被指向内部的局部变量.而不是指向外部的全局变量. 但这时a仅仅有声明。还没赋值,所以输出undefined。 a=4 alert(a); //a为4,没悬念了吧? 这里的a还是局部变量哦!var a; //局部变量a在这行声明 alert(a); //a还是为4,这是由于之前已把4赋给a了 } test(); alert(a); //a为1,这里并不在function scope内。a的值为全局变量的值 </script>
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步