全面解析var、const、let的区别

本文深入探讨JavaScript中的作用域概念,包括变量作用域、函数作用域和作用域链,以及var、let和const声明的区别。理解这些核心概念对于编写高效、可维护的JavaScript代码至关重要。

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

作用域:变量作用域(全局变量和局部变量) 、函数作用域(函数内部的变量)

作用域链:其实就是一些可访问对象的集合。比如函数执行时会产生一个活动对象,活动对象中。

在JavaScript中,函数也是对象,实际上,JavaScript里一切都是对象。函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供JavaScript引擎访问的内部属性。其中一个内部属性是[[Scope]],该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问。

当一个函数创建后,它实际上保存一个作用域链,并且作用域链会被创建此函数的作用域中可访问的数据对象填充。

 

var:

1、可能存在声明提前

     var声明未初始化的变量会提升

     未声明的变量赋值的变量会提升

     只有var声明初始化的变量不会提升

2、能重复声明、能重复赋值

3、不存在块作用域

 

let:

1、不存在声明提前,在块作用域的顶端会有暂时性死区。

2、不能重复声明、能重新赋值

3、存在块作用域

 

const:

同于let,区别在于const不能重复赋值。

 

var声明的变量需要注意的是,函数内部函数执行完成即可销毁,如果在window作用域下,则在关闭页面时才会销毁。

结语:那么何时使用let、const呢,如果只是引用,请使用let、const。循环中,优先使用let。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值