Var let const
Var let const

Var let const

var可重复 let const不可重复

    var  a = 1
    var  a = 2
    console.log(a);  //2

    let  b = 1
    let  b = 2
    console.log(b); //报错

    const c = 1
    const c = 2
    console.log(c); //报错 Identifier 'c' has already been declared(标识符“c”已声明)

作用域  var 全局作用域    let是块级作用域所有外面的语句块访问不到

“同一作用域下变量存在 再let会报错”
 function zuoyongy(status){
        var test1 = '1'
        let test1 = '1'
    }
    console.log(zuoyongy(s)); //报错 Uncaught SyntaxError: Identifier 'test1' has already been declared

全局作用域会挂载到window对象上

    var value1 = "张三"
    let value2 = "李四"
    const value3 = "王五"
    console.log(window.value1) // 张三
    console.log(window.value2) // undefined
    console.log(window.value3) // undefined

var  有变量提升  let是没有变量提升的

    for (var i = 0; i < 5; i++) {
        setTimeout(function() {
            console.log(new Date, i);
        }, 1000);
            
    }
    console.log(new Date,i);
    // 输出5 5 5 5 5 5

    for (let i = 0; i < 5; i++) {
        setTimeout(function() {
            console.log(new Date, i);
        }, 1000);
            
    }
    console.log(new Date,i);
    // 输出0 1 2 3 4 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注