让你一眼看懂 var let const 的区别! 面试必问?

162 阅读1分钟

一.var 的特点

  • .var 声明的变量会挂在到window上,而且letconst声明的变量不会

        var a = 100
        let b = 200
        const c = 300
        console.log('a', window.a);
        console.log('b', window.b);
        console.log('c', window.c);

image.png

  • .2.var 声明变量存在变量提升,let和const不存在变量提升

        console.log(a);
        var a = 100

        console.log(b);
        let b = 200

        console.log(c);
        const c = 300

image.png

image.png

  • .3.let 和 const 会形成块级作用域

        if (true) {
            var a = 100
            let b = 200
            const c = 300
        }
        console.log(a);
        console.log(b);
        console.log(c);

image.png image.png

  • .4.同一作用域下let和const不能声明变量,但var可以

        var a = 100
        var a = 200
        console.log(a);//输出200

        let b = 100
        let b = 200
        console.log(b);//报错

        const c = 100
        const c = 200
        console.log(c);//报错

image.png image.png image.png

  • .5.暂时性死区

     var a = 100
        if (true) {
            a = 10
                //在当前块作用域中存在a使用let/const声明的情况下,
                // 给a赋值10时,只会在当前作用域找变量a,
                // 而这时,还未到声明时候,所以控制台Error:a 
            let a = 1
        }

image.png

二.const 的特点

    1、一旦声明必须赋值
        // 一旦声明必须赋值
        var a;//可以
        let b;//可以
        const c;//不可以
    2、声明后不能再修改
    
        var可以 let也可以  但是const却不可以
        const a = 100
        a = 200

image.png 3、如果声明的是复合类型数据,可以修改其属性

        const list = []
        list[0] = 100
        console.log(list);
        
        list[0] = 300
        console.log(list);

image.png