var let 和const声明变量的特点

本文详细介绍了JavaScript中var、let和const声明变量的特点,包括它们的作用域、变量提升、可变性等。var声明的变量存在变量提升,且可以重复定义;let声明的变量具有块级作用域,不能重新声明但可以赋值;const声明的变量不可变,一旦声明必须立即初始化。通过多个实例展示了它们的使用和行为差异。
摘要由CSDN通过智能技术生成

一、var声明变量的特点

  1. var声明变量为全局声明,当声明在函数内部时为局部变量
  2. var声明变量存在变量声明提升
  3. var可以重复定义一个变量,即后面的覆盖前面的

二、let声明变量的特点

  1. 使用let声明的变量 只在let所在的代码块起作用 (变量绑定)
  2. 在同一代码块内(块级作用域) 使用let声明的变量 可以重新赋值 但是不能重新声明
  3. let声明的变量 必须在声明之后才能使用(不存在变量提升)
  4. 暂时性死区
  5. 在全局作用域内使用let声明的变量 但是不属于全局对象的属性

三、const声明变量的特点

  1. 只在const所在代码块内有效,也就是局部有效。当在全局环境中去找时是找不到的。
  2. 不能重复声明,不能声明提前
  3. 如果常量值为引用数据类型,只要引用地址不变,就可以修改内部属性
  4. 声明过后 不允许改变他的值
  5. cosnt声明和赋值必须一步完成 不允许分开 (声明过后 不允许改变内部存储的地址)

四、三种变量声明的举例应用

实例1代码如下:

<script>
    {
   
        let a=12;
    }
    console.log(a);
</script>

运行结果如下:

引用错误
在这里插入图片描述

总结:通常情况下,如果要声明局部变量,那么就必须使用function创建函数作用域;使用let不管是if 还是for,还是普通的{},都能形成块级作用域。


实例2代码如下:

var tem = new Date()
参考资源链接:[面试官竟然问我JavaScript中varletconst有什么区别这样简单的问题?](https://wenku.csdn.net/doc/6412b737be7fbd1778d4981c?utm_source=wenku_answer2doc_content) 在JavaScript中,varletconst都是用来声明变量的关键字,但它们在作用域和特性上有着明显的差异。为了帮助你深入理解这三种声明方式的区别,我强烈建议阅读这篇资料:《面试官竟然问我JavaScript中varletconst有什么区别这样简单的问题?》。文章深入浅出地分析了这三个关键字,适合在准备面试或技术讨论时快速回顾和巩固知识点。 var声明变量存在变量提升,也就是说变量可以在声明之前被访问,其作用域是函数作用域或全局作用域。letconst则没有变量提升,它们的作用域仅限于块级作用域(即花括号{}内部)。具体来说: 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兼容性相关的特定情况。 掌握了varletconst的区别后,你将能够编写更加健壮和可预测的代码。为了进一步扩展你对变量作用域和声明的理解,除了阅读上述文章外,还可以探索更多关于JavaScript闭包、作用域链和ES6+新特性的资源。 参考资源链接:[面试官竟然问我JavaScript中varletconst有什么区别这样简单的问题?](https://wenku.csdn.net/doc/6412b737be7fbd1778d4981c?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值