JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念
JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念
<html> <body> <script type="text/javascript"> //JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释 myname = "global"; // global variable function func() { //var myname; // 等同于 -> var myname = undefined; //alert(myname); // "undefined" //myname = "local"; //alert(myname); // "local" //JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析)。 //只要你的变量是在同一个作用域中(同一函数),它都被当做是声明的,即使是它在var声明前使用的时候。 //当你使用了一个变量,在函数中又重新声明的话,就可能产生逻辑错误(可能不是预期使用全局变量,而是变成局部变量 undefined) //所有的变量声明当被悬置到函数的顶部了,myname被当做了函数的局部变量(尽管是之后声明的) alert(myname); // "undefined" var myname = "local";//如果这个前面不加var 则上面的myname使用全局变量弹出global alert(myname); // "local" from_func_global = "test"; } func(); var my_var = "myvar"; //每个JavaScript环境有一个全局对象,当你在任意的函数外面使用this的时候可以访问到。你创建的每一个全部变量都成了这个全局对象的属 性。 //在浏览器中,方便起见,该全局对象有个附加属性叫做window,此window(通常)指向该全局对象本身。 //JavaScript有隐含的全局概念,意味着你不声明的任何变量都会成为一个全局对象属性 //通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。 //无var创建的 隐式全局变量(无视是否在函数中创建)是能被删除的。 //隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete 操作符删除的,而变量是不能删除的 // 试图删除 alert(delete my_var); // false alert(delete myname); // true alert(delete from_func_global); // true // 测试该删除 alert(typeof my_var); // "string" alert(typeof myname); // "undefined" alert(typeof from_func_global); // "undefined" </script> </body> </html>
大自然,飘然的风,QQ群: python技术交流群:453879716,人工智能深度学习群:251088643
golang技术交流群:316397059,vuejs技术交流群:458915921 囤币一族:621258209,有兴趣的可以加入
微信公众号: 心禅道(xinchandao)投资论道
golang技术交流群:316397059,vuejs技术交流群:458915921 囤币一族:621258209,有兴趣的可以加入
微信公众号: 心禅道(xinchandao)投资论道
分类:
javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2013-11-04 分享下自己写的计算余额宝上复利的代码,网上的复利计算器无法满足需求