当前位置:数据分析 > JS - 全局变量局部变量

JS - 全局变量局部变量

  • 发布:2023-10-01 06:36

1。什么是全局变量和局部变量
全局变量:通常在函数外部定义,具有全局作用域,也就是说,可以在 JavaScript 代码中的任何位置访问它们。

局部变量:在函数内部定义的变量,只能在函数内部使用。作用域是从函数的开头到结尾,即在{}中。

函数内声明的变量仅在函数体内定义,即它们是局部变量,其作用域是局部的。需要注意的是,在函数体内声明局部变量时,如果不使用var关键字,就会声明全局变量。


这里str1和str3是全局变量,str2是局部变量。

2。全局变量和局部变量的声明
2.1 全局变量的声明
在js中,全局变量的声明分为显式声明和隐式声明。

第一种声明方式:使用var关键字+变量名在函数外声明全局变量,例如:

var bianliang = "全局变量";
第二种声明方式:不使用var关键字声明,直接给变量名赋值,无论是函数内部还是函数外部,都是全局变量,例如:

第三种声明方式:使用window全局对象来声明。全局对象的属性也是全局变量,例如:

window.test3 = 'window全局对象声明全局变量';

console.log(test3);//结果:window全局对象声明全局变量
2.2 局部变量的声明​​请务必使用 var 关键字来声明局部变量。当您使用 var 关键字声明变量时,该变量将自动添加到最近的可用环境中。如果不写var,该变量就会暴露在全局上下文中,成为全局变量。如果变量在未声明的情况下被初始化,则该变量会自动添加到全局环境中。


3. 全局变量和局部变量的一些常见问题
3.1 全局变量与局部变量同名
当全局变量与局部变量同名时,局部变量的作用域将覆盖全局变量的范围。离开局部变量的作用域后,返回到全局变量的作用域。


全局变量遇到局部变量如何使用?使用 www.sychzs.cnVariableName。


3.2 变量分散的问题
在执行之前,Javascript会对整个脚本文件的声明部分(包括局部变量)进行完整的分析,以确定变量的作用范围。因此,Javascript 允许在函数中的任何位置声明变量。无论它们在哪里声明,效果都相当于在函数顶部声明它们。怎么理解呢?看下面的例子:


为什么不:我是全局变量,我是局部变量?
原因很简单:对于JavaScript来说,只要变量在同一个作用域(函数)内,就认为已经声明过,即使它是在变量声明之前使用的。上面的代码相当于:


3.3。变量释放问题
请看以下代码:

结论:

使用var创建的变量不能使用delete释放内存。
不使用var创建的变量可以使用delete来释放内存。 ?不管是否使用var。不声明而直接使用全局变量会报错(可以隐式声明),而局部变量如果先使用再声明则不会报错,但值会是未定义的。

2。当全局变量与局部变量同名时,局部变量的作用域将覆盖全局变量的作用域。当它离开局部变量的作用域时,就会返回到全局变量的作用域。 (如果要指定全局变量,可以使用www.sychzs.cnVariableName。

3.Javascript 允许在函数中的任何位置声明变量。无论它们在哪里声明,效果都相当于在函数顶部声明它们。

4。使用var创建的变量不能使用delete释放内存。其他方式创建的变量可以使用delete来释放内存。

一般来说,全局变量会导致很多bug,所以最好尽量少用全局变量。另外,最好用var来声明变量。不应使用 var 的链式赋值。在函数体中定义变量时,最好将变量声明放在最前面,防止变量未定义就使用,出现逻辑错误。
—————————————————
版权声明:本文为CSDN博主“是欢欢”原创文章,遵循CC 4.0 BY-SA版权协议转载。请附上原始来源和本声明的链接。
原文链接:https://www.sychzs.cn/bznhlhh/article/details/118600660

相关文章

热门推荐