美文网首页
var let 和 const详解

var let 和 const详解

作者: xilong | 来源:发表于2018-04-21 17:36 被阅读17次

推荐使用 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;      //错误,必须申明后马上赋值

相关文章

网友评论

      本文标题:var let 和 const详解

      本文链接:https://www.haomeiwen.com/subject/exoxlftx.html