欢迎来到Introzo百科
Introzo百科
当前位置:网站首页 > 技术 > JavaScript 全局变量和局部变量

JavaScript 全局变量和局部变量

日期:2023-10-01 06:35

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.introzo.comVariableName。 

3.2 散变量问题

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

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


3.3。变量释放问题

请看以下二维码:

结论:

  • 使用var创建的变量无法使用删除释放。
  • 不使用var创建的变量可以使用delete来释放内存。

总结:

1。流程体中的对象(包括方法function(){}、对象Object o={})加上var保留字就是局部变量,其他情况下就是全局变量(无论是否使用var.如果不声明直接使用全局变量会报错(可以隐式声明),但如果先使用局部变量再声明,则不会报错,但值会是未定义的。 2、当全局变量与局部变量同名,局部变量的作用域会覆盖全局变量的作用域,当离开局部变量的作用域时,会返回到全局变量的作用域。(如果你想要指定全局变量,可以使用www.introzo.comVariableName。 3. Javascript允许在函数的任何地方声明 变量,无论在哪里声明,都与在函数顶部声明具有相同的效果。 4. 创建的变量使用 var 不能用于使用 delete 释放内存。其他方式创建的变量都可以使用删除释放内存。

一般来说,全局变量会带来很多bug问题,所以最好尽量少用全局变量。另外,最好用var、来声明变量。不应使用带有 var 的链分配。在函数体中定义变量时,最好将变量声明放在最上面,防止变量出现。未定义而使用时出现逻辑错误。

关灯