js作用域的学习

本文通过实例详细解析了JavaScript中局部变量与全局变量的作用域及优先级问题,并深入探讨了局部变量未赋值时的输出行为。

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

javascript变量分为全局变量和局部变量。局部变量的优先级又比全局变量的高。

下面看几个例子:

 var a=0;
 function test() {
    console.log(a);
};
 test(); //输出0
a为全局变量,函数能访问到
 var a=0;
 function test() {
    var a= 1;
    console.log(a);
};
 test(); //输出1  
局部变量的优先级比全局变量的优先级高

 var a=0;
 function test() {
     console.log(a);
    var a= 1;
    console.log(a);
};
 test(); //输出undefined,1

这是为什么呢?

我们来看下面这个例子

 var a=0;
 function test() {
    console.log(a);
    var a= 1;
    console.log(a);
};
function test2(){
    console.log(a);

};
 test();
 test2(); //输出undefined,1,0
全局变量a在test2()输出,这就说明全局变量并未销毁。那为什么在test()中会打印undefined呢?

我的理解是这样的:由于局部变量的优先级高,当执行此js代码时,执行器已经为test()的局部变量a进行声明,给a一个空间,但是并没有赋值,而是在test()中执行到var a=1时才对这个空间赋值。所以第一个打印出undefined。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值