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   Love&Share  阅读(463)  评论(0编辑  收藏  举报

编辑推荐:
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示