变量的作用域?全局变量?局部变量?全局变量和局部变量的重名?

本文深入讲解JavaScript中的变量作用域概念,包括全局变量和局部变量的区别,以及如何在函数内部修改全局变量。同时,探讨了变量在不同作用域下的生命周期,以及在函数中局部变量与全局变量重名时的处理方式。

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

变量的作用域?

作用域:某个内容起作用的范围。

全局变量:

  1. 当在JavaScript中定义变量,在当前script标签中,若在定义该变量前去调用该变量,值是undefined,而在没有定义该变量就去调用该变量是会报错的。原因是所有定义的变量都是先在内存中开辟该变量的存储位置,即变量存储在栈中,当代码解释到该语句时才会将值存在栈中,即值先不做处理,所以调用一个变量时计算机是先去栈中查找有没有该变量,结果发现是有的但没有赋值,所有是undefined。如果该对象没有定义就不会在内存中开辟存储 ,因此就会报错。
  2. 如果在上一个script中调用下面的script的变量时,这时候不但没有值,而且连存储空间都没有开辟,因此,在上一个script中调用下面其他script中的变量是永远都会报错的。
  3. 一旦定义变量完成后,在后面的script中都是可以任意调用的,因为这些变量都是全局变量。

 

函数内定义的变量作用范围是在该函数内,一旦该函数运行完成后,函数内定义的变量将会自动销毁。

函数中是可以修改全局变量的,而此时该全局变量就是改变后的全局变量。在外部调用该全局变量也是修改后的全局变量。

 

全局变量:就是在script标签下直接使用var定义的变量,全局变量可以应用于所有的代码中调用获取,范围非常大

局部变量:就是在函数中使用var定义的变量,仅用于当前函数的执行范围内

 

全局变量和局部变量的重名?

如果在函数中定义了某个局部变量名,那么在该函数中所有这个变量都是局部变量。

不能通过直接使用变量名的方法调用外部的全局变量了。

如果全局变量的名称在函数中和局部变量名相同,想要调用全局变量时,需要在变量名前加上window前缀。如window.s1 += 10; 否则就是指该函数下的局部变量。

<script>

        var s = 10;

        function fn3(){

            console.log(s); //此时s打印为undefined,因为只有变量还没有值

            s += 10 ;

            console.log(s); //打印出的s为NaN,因为是相当于undefined + 10

            var s = 20;

        }

        fn3();

    </script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值