javascript中var同时声明多个变量时的原理是什么?

1.只声明一个的情况

<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都是自动解析为全局变量了。

2.接连声明几个的情况

<script>
    function show(){
        var a=5,b=6,c=7;
    }
    show();
    alert(c);//弹出a、b、c全都报错
</script>
由此可见var声明了3个局部的变量

let也是一样的
let webName="蚂蚁部落",address="青岛市南区";
console.log(webName);
console.log(address);

代码的运行结果如下:
蚂蚁部落
青岛市南区

3…要声明函数对象的情况

var a=1,b=2,c=3,d=4;
也就是用,分隔多个变量。

这样不换行的情况,只适合变量值比较单一的情况,如果你的变量是函数或对象,则要换行了:
var a=function (){
 var b,c,d;
},
b = {
 b:1,
 a:2
};
这样可以一直写下去,且能保持良好的可读性。当然,最后记得要用;收尾。

4.关于变量的删除的问题

var webName="蚂蚁部落";
address="青岛南区";
delete webName;
delete address;
console.log(webName);
console.log(address);
结果如下:

在这里插入图片描述
可以看到使用var声明的变量没有被删除,不使用var的被删除,所以代码会报错。

由此可见,两者是不同的,var声明的是一个真正的变量,address只是window的一个自定义属性。

不使用var的address其实是全局对象的一个属性,也就是说为全局对象添加了一个自定义属性adress并赋值,

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值