JavaScript ES6中let、const与var的区别详解

作者:小括号

时间:2026-10-25

浏览:275

本文详细解析JavaScript ES6中let、const与var三种变量声明方式的区别。重点阐述块级作用域、变量提升、全局对象挂载及重复声明限制等共同点,并对比值可变性与引用类型处理的差异。通过for循环与setTimeout异步执行的经典案例,深入剖析var与let在循环变量作用域上的不同表现,最后给出优先使用const、其次let、最后var的最佳实践建议。

文章目录

一、变量声明的方式let / const

let / const 共同点

1.均为块级作用域 2.同一作用域内变量名不可重复 3.声明的全局变量未挂载至window对象 4.均不存在预编译机制

let / const 不同点

1.let声明的变量值允许修改 2.const声明的变量值不可修改,需声明时立即赋值(例如:const a = 3.14;) 3.const存储引用数据类型时,内容可修改(地址不可变)

优先使用const,若变量需改变则使用let,最后考虑var

for循环中 var 和 let 的区别

var:变量i由var命令声明,全局有效,仅存在一个全局变量i。每次循环变量i值改变,计时器内部函数console.log(i)中的i指向全局i。计时器异步执行,for循环结束后才运行。

        for(var i = 1 ; i < 10 ; i++){
            setTimeout(function () {
                console.log(i);   // 输出为 9 个 10
            })
        }

let:变量i由let声明,仅在当前循环轮次有效,每轮循环的i均为新变量,故最终输出 1 2 3 4 5 6 7 8 9 10 。JavaScript引擎内部会记住上一轮循环的值,基于此初始化本轮变量i。

        for(let i = 0 ; i < 10 ; i++){
            setTimeout(function () {
                console.log(i);  // 0 1 2 3 4 5 6 7 8 9 
            })
        }

总结

本文到此结束,希望能带来帮助,欢迎关注本站更多内容!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章