当前位置:网站首页 > JavaScript开发 > 正文

auto.js全局变量(javascript 全局变量 局部变量)



1.什么是全局变量和局部变量

全局变量:常常定义在函数外部,拥有全局作用域,即在 JavaScript 代码的任何地方都可以访问。

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

在函数内声明的变量只在函数体内有定义,即为局部变量,其作用域是局部性的。需要注意的是,在函数体内声明局部变量时,如果不使用 var 关键字,则将声明全局变量。

此处str1和str3是全局变量,str2为局部变量。

在js中全局变量声明方式分为显示声明和隐式声明。

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

第二种声明方式:没有使用var关键字声明,直接给变量名赋值,不管是在函数内部还是外部都是全局变量,例如:

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

声明局部变量一定要使用关键字,使用关键字声明变量时,变量会自动添加到距离最近的可用环境中。如果没有写, 变量就会暴露在全局上下文中, 成为全局变量。如果变量在未声明的情况下被初始化,该变量会自动添加到全局环境。

当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope。

Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定变量的作用域。所以Javascript允许在函数的任意地方声明变量,无论在哪里声明,效果都等同于在函数顶部进行声明。怎么理解呢?看下面一个例子:

为什么不是: 我是全局变量 和 我是局部变量? 原因很简单:对JavaScript而言,只要变量是在同一个范围(函数)里,就视为已经声明,哪怕是在变量声明前就使用。上面的代码相当于:

请看下面的代码:

结论:

1.在过程体内(包括方法function(){},对象Object o={})内的对象)加var保留字则为局部变量,其他情况下都是全局变量(无论是否使用var。不进行声明而直接使用全局变量会报错(可以隐式声明),而局部变量先使用后声明则不会报错,只是值为undefined。 2.全局变量跟局部变量重名时,局部变量的范围会覆盖掉全局变量的范围,当离开局部变量的范围后,又重回到全局变量的范围。(若想指定是全局变量可以使用 window.globalVariableName。 3.Javascript允许在函数的任意地方声明变量,无论在哪里声明,效果都等同于在函数顶部进行声明。 4.使用 var 创建的变量不能使用 delete 释放内存,其他方式创建的变量可以使用 delete 释放内存。

一般来说全局变量所带来的 bug 问题非常多,所以最好尽量少用全局变量。另外,声明变量最好带 var, 不应使用带 var 的链式赋值,在函数体内定义变量时,最好把变量声明放在顶部,防止出现变量没有被定义就被使用的逻辑错误。

到此这篇auto.js全局变量(javascript 全局变量 局部变量)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 数组方法map和foreach(javascript 数组map 方法)2025-08-13 16:45:07
  • 一级用html+javascript打造公文一键排版系统4:一级标题排版二级用html+javascript打造公文一键排版系统4:一级标题排版示范空两格(一级用html+javascript打造公文一键排版系统4:一级标题排版二级用html+javascript打造公文一键排版系统4:一级标题排版三级用html+javascript打造公文一键排版系统4:一级标题排版前面空格2025-08-13 16:45:07
  • 数组方法map有返回值么(javascript 数组map 方法)2025-08-13 16:45:07
  • Javascript-filter遍历数组 返回符合条件的每一项2025-08-13 16:45:07
  • JavaScript毫秒整数转化为时分秒2025-08-13 16:45:07
  • JavaScript 动态修改Objcet的属性值2025-08-13 16:45:07
  • Javascript-every遍历数组 每一项均符合条件后执行相应操作2025-08-13 16:45:07
  • react javascript(react javascript 怎么传递一个list给后端)2025-08-13 16:45:07
  • js获取天气预报接口(javascript天气预报网页)2025-08-13 16:45:07
  • auto.js全局变量(javascript中全局变量和局部变量的作用域)2025-08-13 16:45:07
  • 全屏图片