var、let和const

1.var关键字

1).使用var定义的变量会成为包含它的函数的局部变量,;例如,在一个函数内部定义夜歌变量,即意味着该变量在函数退出时被销毁。

function test() {
    var msg = "hello"//局部变量
}
    test()
    console.log(msg)//出错!

2).去掉var,变量就变成了全局变量(不推荐此做法)

function test() {
    msg = "hello"// 全局变量
}
    test()
    console.log(msg)// hello

3).使用var声明的变量会自动提升到函数作用域顶部 (“提升”,就是把所有变量声明都拉到函数作用域顶部)

function test() {
    console.log(age);
    var age = 22;
}
    test();//undefin   

等同于

function test() {
    var age;
    console.log(age);
    var age = 22;
}
    test();//undefined

2.let的声明及与var的区别

1)let与var作用差不多,其最明显的区别是,let声明的是块作用域,var声明的是函数作用域。

if (true) {
    var age = 18
    console.log(age)//18
}
    console.log(age)//18

if (true) {
    let age = 18
    console.log(age)//18
}
    console.log(age)//ReferenceError:age 没有定义

2)let声明的变量不会再作用域中被提升


3)与var不同,let再全局作用域中声明的变量不会成为window对象的属性(var则会)

            var name = 'Jack'
            console.log(window.name)//Jack
            
            let age = 18
            console.log(window.age)//undefined

3.const的声明与区别

1)const与let基本相同,唯一一个重要区别: 用const声明变量时必须同时初始化变量,且该变量无法被修改,也不允许重复声明。

posted @ 2021-04-29 00:36  雪茄与咖啡  阅读(67)  评论(0)    收藏  举报