var , let , const 区别

1|01. 作用域

letconst 存在块级作用域, var 不存在块级作用域

for(var i = 0 ;i<5;i++) { setTimeout(()=> { console.log(i) }) } // 输出 5, 5, 5, 5, 5 for(let i = 0 ;i<10;i++) { setTimeout(()=> { console.log(i) }) } // 输出 0, 1, 2, 3, 4

2|02. 重复声明

同一作用域下,var 允许重复声明,letconst 不允许

var a = 1 var a = 2 let a = 3 // SyntaxError: Identifier 'a' has already been declared

3|03. 变量提升与暂时性死区

var 变量的声明会提升至当前作用域顶端

console.log(a) // undefined var a = 1 // 以上声明等价于 var a; console.log(a) // undefined a = 1

let 与 const 声明会放在TDZ(temporal dead zone)即暂时性死区中,只有完成执行TDZ中的变量才会将其移出,在此之前访问变量会抛出错误.

console.log(typeof a) // undefined // 未定义的变量使用 typeof 访问并不会抛出错误
console.log(typeof a) // ReferenceError: Cannot access 'a' before initialization let a = 1

4|04. var 会覆盖 window 对象上的属性

var a = 1 let b = 2 const c = 3 window.a // 1 window.b // undefined window.c // undefined

5|05. const 声明必须初始化,且值不可改变

const a // SyntaxError: Missing initializer in const declaration
const a = 1 a = 2 // TypeError: Assignment to constant variable.

__EOF__

本文作者Odyssey
本文链接https://www.cnblogs.com/qingzhao/p/18120929.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   --Odyssey--  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示