js中的全局作用域与函数作用域

本文详细介绍了JavaScript中的作用域,包括全局作用域和函数作用域。全局作用域在页面加载时创建,销毁于页面关闭,其中的变量作为window对象的属性。函数作用域在每次调用时创建,结束后销毁,其内的变量只在其内部有效。函数作用域查找变量时遵循“作用域链”,未找到则向上级作用域查找,直至全局作用域。同时,讨论了变量声明提前和函数声明提前的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作用域:

        作用域指一个变量的作用的范围,在街上中一共有两种作用域:

函数作用域存在于函数之中,全局变量可以使用于整个程序中。两种作用域的关系如下图所示:

 

 如上图所示,函数作用域1与函数作用域2均处于全局作用域中。且函数作用域1与函数作用域2两个作用域互不相关,每一个独立的函数作用域中的变量互不影响。在函数作用域中如果有未定义的变量,则会像全局作用域中寻找。

全局作用域:

全局作用域:
    - 直接编写在script标签中的js代码,都在全局作用域
    - 全局作用域在页面打开时创建,在页面关闭时销毁
    - 在全局作用域中有一个全局对象window,它代表的是一个浏览器的窗口,
        它由浏览器创建的我们都可以直接使用。
    - 在全局作用域中:创建的变量都会作为window对象的属性保存。
                     创建的函数都会被作为window对象的方法保存。
    - 全局作用域中的变量都是全局变量,在页面的任何的部分都可以访问到。
变量的声明提前:使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值)
    但是如果声明变量时不适用var关键字,则变量不会提前声明。
如:console.log(a);var a = 1;等价于a = 1; console.log(a);
函数的声明提前:使用函数声明形式创建的函数function函数(){}
    它会在所有的代码执行之前就被创建,所以我们可以在函数声明前来对函数进行调用函数
使用函数表达式创建的函数,不会被声明提前,所以不能在声明前进行调用

函数作用域:

函数作用域
    - 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁。
    - 每调用一次函数就会创建一个新的函数作用域,它们之间是相互独立的。
    - 在函数作用域中可以访问到全局作用域的变量。在全局作用域中无法访问到函数作用域的变量。
    - 当在函数作用域操作一个变量时,它先在自身作用域中寻找,如果有就直接使用。
        如果没有则向上一级作用域寻找。如果全局作用域仍然没有找到,则会报错。
如: var a =10 function(){ var a =1 ; console.log(a);};fun()输出结果为1.
    var a =10 function(){ console.log(a);};fun() 输出结果为10
在函数作用域也有声明提前的特性,
    使用var关键字声明的变量,会在函数中所有的代码执行之前被声明
    在函数中,不适用var声明的变量都会成为全局变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杂乱无章的我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值