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并赋值,

参考资源链接:[面试官竟然问我JavaScriptvar、let和const有什么区别这样简单的问题?](https://wenku.youkuaiyun.com/doc/6412b737be7fbd1778d4981c?utm_source=wenku_answer2doc_content) 在JavaScript中,var、let和const都是用来声明变量的关键字,但它们在作用域和特性上有着明显的差异。为了帮助你深入理解这三种声明方式的区别,我强烈建议阅读这篇资料:《面试官竟然问我JavaScriptvar、let和const有什么区别这样简单的问题?》。文章深入浅出地分析了这三个关键字,适合在准备面试或技术讨论快速回顾和巩固知识点。 var声明变量存在变量提升,也就是说变量可以在声明之前被访问,其作用域是函数作用域或全局作用域。let和const则没有变量提升,它们的作用域仅限于块级作用域(即花括号{}内部)。具体来说: 1. var: - 可以在声明前访问,值为undefined。 - 函数作用域或全局作用域。 - 可以重复声明同一变量。 示例: function exampleVar() { console.log(a); // undefined,变量提升 var a = 'value'; console.log(a); // 'value' } exampleVar(); 2. let: - 没有变量提升,不可在声明前访问,会抛出ReferenceError。 - 块级作用域。 - 不可以重复声明同一变量。 示例: function exampleLet() { let a = 'value'; console.log(a); // 'value' } exampleLet(); 3. const: - 和let一样,没有变量提升,不可在声明前访问。 - 块级作用域。 - 必须在声明初始化,之后不可修改。 示例: function exampleConst() { const a = 'value'; console.log(a); // 'value' // a = 'new value'; // TypeError: Assignment to constant variable. } exampleConst(); 在实际开发中,推荐优先使用const,只在你知道变量值会变化使用let。而var由于其作用域和提升的特性,在现代JavaScript中应尽量避免使用,除非是在处理旧代码或与var兼容性相关的特定情况。 掌握了var、let和const的区别后,你将能够编写更加健壮和可预测的代码。为了进一步扩展你对变量作用域和声明的理解,除了阅读上述文章外,还可以探索更多关于JavaScript闭包、作用域链和ES6+新特性的资源。 参考资源链接:[面试官竟然问我JavaScriptvar、let和const有什么区别这样简单的问题?](https://wenku.youkuaiyun.com/doc/6412b737be7fbd1778d4981c?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值