JS变量作用域的问题

  1. 变量的作用域
    在函数中用var操作符定义的变量,是定义该变量作用域中的局部变量。也就是test()作用域链中的变量。
function test(){
    var message="hi";//局部变量
}
test();
alert(message);//报错!

但是当代码是:

function test(){
     message="hi";//全局变量
}
test();
alert(message);//"hi"

这时message是一个全局变量。因为在JS里面规定,如果在函数内部省略var操作符,就会创建一个全局变量。
2. 逗号操作符
(1)逗号操作符可以在一条语句中执行多个操作,例:
var num=1,num2=2,num3=3;
可以声明多个变量。
(2)逗号操作符用于赋值,在赋值时,逗号操作符总会返回表达式中最后一项。例:

var num=(5,3,4,2,0);//num的值为0

3.变量的赋值:
变量赋值是把右侧的值赋给左侧的变量,是有顺序的。例:

<script>
    function show(){
        var a=b=c=d=5;
    }
    show();
    alert(a);//弹a时报错(not defined),而b、c、d都能弹出5
</script>

原因是:在赋值时,var a=b=c=d=5;等价于var a=(b=(c=(d=5)));,其中只有a被声明了,b,c和d都是自动解析为全局变量了。
但是下面的例子中:

<script>
    function show(){
        var a=5,b=6,c=7;
    }
    show();
    alert(c);//弹出a、b、c全都报错
</script>

按照逗号操作符的定义,在一条语句中可以声明多个变量,所以a,b,c都是局部变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值