js中变量的作用域,let,const详解
1)函数体中的在函数体外不能用
2)如果两个函数使用相同的变量名,只要在函数内部,就不冲突
3)函数成员可以访问函数内部的成员,反之不行
4)假设,内部函数变量和外部函数的变量重名,由内向外查找。
提升变量的作用域
1 function fun() { 2 3 var x = "x" + y; 4 console.log(x); 5 var y = 'y'; 6 }
结果:undefined
说明:js执行引擎,自动提升了y的声明,但是不会提升变量y的赋值
1 function fun() { 2 3 var y; 4 var x = "x" + y; 5 console.log(x); 6 y = "y"; 7 }
这个是js在建立之初就存在的特性。养成规范:所有的变量定义都放在函数的头部,不要乱放,便于代码维护。
1 function fun2() { 2 var x = 1, 3 y = x + 1, 4 z,i,a; 5 6 // 之后随意用 7 }
全局变量
1 x = 1; 2 function f() { 3 console.log(x); 4 } 5 f(); 6 console.log(x);
全局对象window
var x = 'xxx'; alert(x); alert(window.x) ;// 默认的全局变量,都会自动绑定在window对象下
alert()这个函数本身也是一个window变量
1 var x = 'xxx'; 2 window.alert(x); 3 var old_alert=window.alert; 4 window.alert = function() { 5 6 }; 7 // 发现alert()失效了
js实际上只会有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在全局作用域都没有找到,拨错refernceError
规范:
由于我们所有的全局变量都会绑定到我们的window上。如果不同的js文件,使用了相同的全局变量,会发生冲突:如何解决冲突?
1 // 唯一全局变量 2 var MyCode = {}; 3 4 // 定义全局变量 5 MyCode .name = "zhangsan"; 6 MyCode .add = function (a, b) { 7 return a + b; 8 }
把自己的代码全部放到自己定义的唯一空间名字中,降低全局命名冲突的问题
jQuery就是这样干
局部变量用let,定义常量用const
posted on 2021-05-06 19:39 Love&Share 阅读(463) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~