var,let,const之间的区别

var 是ES5的声明变量语法,let 与 const 是ES6才出现的声明变量语法


var

var 拥有函数作用域,在函数外是全局的,在函数内是局部的

var a = 10
function demo(){
  var a = 20
  console.log(a) // 20  
}
demo()
console.log(a) // 10

var 拥有声明头的提升

console.log(a) // undefined
var a = 10

----------------------------------
// 会被编译成
var a
console.log(a)
a = 10

var 可重复声明,后面的会将前面的给覆盖

var a = 10
var a = 20
console.log(a) // 20

 

let 

let 是块级作用域,但是所声明的变量,只在let命令所在的代码块内有效

复制代码
{ let a = 10 }
console.log(a) // ReferenceError: a is not defined
------------------------------------------------------
let a = 10
function demo(){
  let a = 20
  console.log(a) // 20
}
demo()
console.log(a) // 10
复制代码

let 没有声明头的提升

console.log(a) // ReferenceError: Cannot access 'a' before initialization
let a = 10

let 不能够重复声明

let a = 10
let a = 20
console.log(a) // SyntaxError: Identifier 'a' has already been declared

 

const

const 基本上和 let 一样   是一个块级作用域,没有声明头的提升,不能够重复声明

但是 const 定义的是一个常量,使用了 const 进行定义的变量不能够进行修改

const a = 10
a = 20
console.log(a) // TypeError: Assignment to constant variable.

 

var 和 let 的应用

var 现在比较少用了,一般改用 let ,因为 var 没有块级作用域

如:

var a = 1
for(var a = 5 ; a <= 10 ; a++){
  // console.log(a)
}
console.log(a) // 11 因为什么块级作用域,所以在上面命名的变量会与进行for循环中的变量重叠

但是在 let 中就没有这种情况了

let a = 1
for(let a = 5 ; a <= 10 ; a++){
    // console.log(a)
}
console.log(a) // 1 let 是块级作用域,其在 for 定义的变量不会影响外部所定义的变量

 

参考资料 https://blog.csdn.net/weixin_44475093/article/details/112504907

posted @   感觉678  阅读(188)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示