1 var let const区别

 

javascript中有三种声明变量的方式:var、let、const

var声明全局变量

let用于声明变量 与var相似  但所声明的变量只在let命令所在的代码块内有效

const声明一个只读的常量 ,声明后其值不可改变 ,

let const相同点:

  1. 块级作用域:只在声明所在的块级作用域内有效
  2. 不存在常量提升:只能在声明后使用, 存在暂时性死区:在代码块内,使用声明命令之前 改变量/常量都是不可用的
  3. 不可重复使用:不可以在相同的作用域内重复声明同一个变量

不同点:

const声明的变量不能改变值,也是由于这个规则,const一旦声明常量就必须立即初始化,不能留到以后赋值

注:const实际上不是变量的值不得更改动  而是变量指向的那个内存地址不得改动

基本数据类型  :值就保存在变量指向的内存地址

复合(对象和数组):变量指向的内存地址保存的只是一个指针

可参考es6标准入门第2章

 

JavaScript 中 `var`、`let` 和 `const` 是用于声明变量或常量的关键字,它们在作用域、变量提升、重复声明、重新赋值以及与全局对象的关联等方面存在显著差异。 ### 作用域 - `var` 声明的变量具有函数作用域,如果在函数外部声明,则具有全局作用域,并且会成为全局对象(如浏览器中的 `window`)的属性[^1]。 - `let` 和 `const` 声明的变量具有块级作用域,仅在声明它的代码块内有效,并且不会成为全局对象的属性[^3]。 ### 变量提升 - `var` 声明的变量存在变量提升,即变量声明会被提升到其作用域的顶部,可以在声明之前访问,但此时的值为 `undefined`[^3]。 - `let` 和 `const` 声明的变量不存在变量提升,必须在声明之后才能访问,否则会抛出引用错误(ReferenceError)。 ### 重复声明 - `var` 允许在同一个作用域内重复声明相同的变量名,后声明的变量会覆盖之前的声明[^3]。 - `let` 和 `const` 不允许在同一个作用域内重复声明相同的变量名,否则会抛出语法错误(SyntaxError)。 ### 重新赋值 - `var` 和 `let` 声明的变量可以被重新赋值[^3]。 - `const` 声明的变量不能被重新赋值,且在声明时必须初始化。如果 `const` 声明的是一个引用类型(如对象或数组),虽然不能更改变量的绑定,但可以修改对象或数组的内容[^3]。 ### 暂时性死区(Temporal Dead Zone, TDZ) - `let` 和 `const` 在声明之前存在暂时性死区,即在代码中从块的开始到声明语句之前,访问该变量会抛出错误[^3]。 - `var` 不存在暂时性死区,可以在声明之前访问该变量(尽管值为 `undefined`)。 ### 推荐的使用方式 - 在现代 JavaScript 开发中,推荐优先使用 `const`,只有在需要修改变量值时使用 `let`,而应避免使用 `var`,因为 `let` 和 `const` 提供了更清晰和安全的变量管理方式[^2]。 ### 示例代码 以下是一个简单的示例,演示了 `var`、`let` 和 `const` 在作用域和访问性方面的差异: ```javascript { var a = 1; let b = 2; const c = 3; console.log(a); // 1 console.log(b); // 2 console.log(c); // 3 } console.log(a); // 1 // console.log(b); // 报错:ReferenceError // console.log(c); // 报错:ReferenceError ``` ### 相关问题 1. 在函数作用域中使用 `var` 和 `let` 有什么不同? 2. `const` 声明的对象为什么可以修改其属性? 3. 为什么 `let` 和 `const` 没有变量提升? 4. 如何理解 `const` 的暂时性死区? 5. 在 `for` 循环中使用 `var` 和 `let` 会有什么区别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值