const、var、let

const、var、let

 

 

 

 

const

var

let

 

 

const

作用:定义不可修改的且必须初始化的变量

作用范围:块级作用域

<script>
    window.onload = function() {
        // const 定义常量类型
        //const a; // 编译器报错:must be initialize
        const a = 50;
        console.log(a);// 50
        //a = 70;  // 编译器报错:说a是readonly
        console.log(a);// 50
        
        // const 定义数组对象类型:可见const定义的数组是可以被修改的,
        // 也仅仅支持修改数组内容,不支持修改数组引用指向
        const arr = new Array();
        arr.push(1);
        arr.push(2);
        console.log(arr);// 1,2
</script>

 

 

var

作用:定义的变量支持修改,未初始化的变量默认为undefined

<script>
    window.onload = function() {
        // var 定义常量类型
        var a; // 编译器不会报错
        console.log(a); // 输出undefined
        a = 50; // 支持修改
        console.log(a);

        // var 定义的对象支持修改
        var arr = new Array();
        arr.push(1);
        arr.push(2);
        console.log(arr);

        arr = '2';// 支持类型修改
        console.log(arr);// 2

    }
</script>

 

let

作用:常用在块级作用域,可以被修改,常用于闭包循环

<script>
    window.onload = function() {
        // let 常常用于块级作用域
        let a;
        console.log(a);// undefined
        a = 10;
        console.log(a); // 10

        b = 20;
        var b; // 不会报错,编译期会将变量b的声明提前

        //c = 30;
        //let c;// 报错,块级变量,编译期不会提前???

        // var 在闭包循环内定义的变量外部依然可以访问
        for(var j = 0;j < 2;j++) {
            console.log("var for:"+j);
        }
        console.log("外部依然可以访问var闭包内定义的变量:"+j);

        // let 常用于闭包循环
        for(let i = 0;i < 2;i++) {
            console.log("let for:"+i);
        }
        console.log("外部可以访问let闭包内定义的变量吗?"+i);

    }
</script>

 

posted @ 2020-08-10 09:49  刘呆哗  阅读(125)  评论(0编辑  收藏  举报