JavaScript 全局变量和局部变量
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 的链分配。在函数体中定义变量时,最好将变量声明放在最上面,防止变量出现。未定义而使用时出现逻辑错误。
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 允许您在 函数 的 的任何位置声明变量 。无论在哪里声明,效果都是相当于在代码语句顶部的
进行声明。怎么理解呢?看下面的例子:
var
关键字。当使用 var
关键字声明变量时,该变量将自动添加到最近的可用环境中。如果不写var
,该变量将暴露在全局上下文中,成为全局变量。如果变量在未声明的情况下被初始化,则该变量会自动添加到全局环境中。
全局变量遇到局部变量如何使用?使用 www.introzo.comVariableName。
为什么不:我是全局变量,我是局部变量?原因很简单:对于 JavaScript 来说,只要变量在同一个作用域(函数)内,就认为已经声明过,即使它是在变量声明之前使用的。上面的代码相当于:
3.3。变量释放问题
请看以下二维码:
结论:
- 使用var创建的变量无法使用删除释放。
- 不使用var创建的变量可以使用delete来释放内存。
总结:
1。流程体中的对象(包括方法function(){}、对象Object o={})加上var保留字就是局部变量,其他情况下就是全局变量(无论是否使用var.如果不声明直接使用全局变量会报错(可以隐式声明),但如果先使用局部变量再声明,则不会报错,但值会是未定义的。 2、当全局变量与局部变量同名,局部变量的作用域会覆盖全局变量的作用域,当离开局部变量的作用域时,会返回到全局变量的作用域。(如果你想要指定全局变量,可以使用www.introzo.comVariableName。 3. Javascript允许在函数的任何地方声明 变量,无论在哪里声明,都与在函数顶部声明具有相同的效果。 4. 创建的变量使用 var 不能用于使用 delete 释放内存。其他方式创建的变量都可以使用删除释放内存。
一般来说,全局变量会带来很多bug问题,所以最好尽量少用全局变量。另外,最好用var、来声明变量。不应使用带有 var 的链分配。在函数体中定义变量时,最好将变量声明放在最上面,防止变量出现。未定义而使用时出现逻辑错误。
相关文章
- 10-05 什么是共享单车黑名单制度?共享单车黑名单制度
- 10-05 如何开启Android手机的便携式热点功能
- 10-05 360n5s发布会直播地址360n5s新品发布会视
- 10-05 【第200期】面试官:您能简单讲一下SpringM
- 10-05 【第411期】Docker连杀15题,你能坚持哪题
- 10-05 【第432期】面试官:您的项目中使用Redis的目
- 10-05 ZEEKR 001 FR高性能车型预热:搭载4电机
- 10-05 我国网民规模达10.79亿,互联网普及率达76.4
- 10-05 《2023年标准地图》正式上线
- 10-05 stm32内存包括哪些类型(stm32内存分为几个
- 10-05 stm32采集+数据处理程序(stm32采集+数据
- 10-05 stm32仿真图的引脚如何连接(stm32仿真器接
- 10-05 Zabbix警告问题
- 10-05 Zabbix集成云预警(瑞祥云)实现电话短信预警
- 10-05 利用企业微信实现预警(shell+python)
- 10-05 高通CEO爆料苹果自研5G芯片明年准备就绪
- 10-05 全球智能手机市场被扰乱:iPhone与Androi
- 10-05 苹果最新巧克力广告:Apple Card激活到付款
- 10-05 苹果推出iOS 15.6正式版固件:我们来看看iO
- 10-05 iPadOS 16 允许应用程序使用 M1 设备存
- 最近发表