var let 和 const详解

推荐使用 let 来定义变量,而逐渐放弃使用 var ,这样会使你的代码更加规范,避免出现那些你很难预料的bug
const定义的是常量,在后面的代码中就不能对 const 进行修改了,否则就会报错。

var 和 let

var 声明的变量作用于函数内,且存在变量提升
let 变量作用于块级作用域 (花括号 括起来的地方)不存在变量提升,先使用后申明会报错。

let声明的全局变量不是全局对象的属性。 这就意味着,你不可以通过window.变量名的方式访问这些变量。它们只存在于一个不可见的块的作用域中,这个块理论上是Web页面中运行的所有JS代码的外层块。但是 var 申明的变量可以

下面的代码 就是用 var 会出现的 bug:

function test() {
    let  a = ['11','22','33'];
    for (let i = 0;i<a.length;i++){
        setTimeout(function () {
            console.log(a[i]);     会依次打印 11 ,22,33
        },i * 1500)
    }
}
test()

function test() {
    let  a = ['11','22','33'];
    for (var i = 0;i<a.length;i++){
        setTimeout(function () {
            console.log(a[i]);     会报3次错,因为setTimeout还么有执行, i 就已经等于3了
        },i * 1500)
    }
}
test()

因为let 的作用域是在代码块中,执行3次for循环,每个for循环中的都用 let 声明了变量,所以三次都不同

const

let 拥有的,const 都有,const修改的是常量,在后面的代码中就不能对 const 进行修改了,否则就会报错。
特别是必须申明后 马上赋值

    const  a = 1; //正确
    a = 100;      //不能够修改 
    const a;      //错误,必须申明后马上赋值
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容