欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ES6 的let 、const

程序员文章站 2024-01-01 17:45:58
...

let :

   ES6中新增用于声明变量的关键字

  •     let 声明的变量只在所处于的块级有效(什么是块级作用域? 就是一对大括号中产生的作用域,一对大括号就代表一个块级作用域)
    <script>
        if(true){
            let a = 10;
            console.log(a); // 10
            if(true){
                let c = 20;
                console.log(c); // 20
            }
            console.log(c); // c is not defined
        }
        console.log(a) //a is not defined
    </script>

        使用 let 关键字声明的变量才具有块级作用域,使用 var 声明的变量不具备块级作用域特性;

        if(true){
            let x = 15;
            var r = 22;
        }
        console.log(r); // 22
        console.log(x); //x is not defined

        拥有块级作用域还可以防止循环变量 变成 全局变量 

       for(var i = 0; i < 2; i++){

       }
       console.log(i); // 2 

       for(let p = 0; p < 2; p++){

        }
        console.log(p);  // p is not defined
  • let 声明的变量,不存在变量提升
        console.log(m)  // underfined
        var m
        // 只能先声明 才能使用
        console.log(k); //Cannot access 'k' before initialization 初始化前无法访问“k
        let k = 1;

经典面试题:

        let arr = [];
        for(let i = 0; i < 2; i++){
            arr[i] = function(){
                console.log(i)  // 0   1
            }
        }
        arr[0]();
        arr[1]();

const:

        ES6中新增用于声明变量的关键字

    作用: 使用 const 关键字声明的变量称之为 “常量” ,所谓常量就是 值不能改变的量

  •  使用 const  关键字声明的变量具有 块级作用域  只能在声明区域里使用,在外面是使用不了的
        if(true){
            const a = 2;
            console.log(a);  // 2
        }
        console.log(a);  //a is not defined

ES6 的let 、const

  •  使用 const 关键字声明的常量必须赋 初始值 ,要不然会报错
        const x;  // 报错:Missing initializer in const declaration   常量声明中缺少初始值设定项
        const x = 5;
        console.log(x);
  •  使用 const  声明的常量的值 是不能进行修改的
        const m = 3;
        m = 6;  // 报错:TypeError: Assignment to constant variable.  类型错误:分配给常量值。

         但是如果声明的变量是复合类型的,则是可以修改其内部属性的,这时可以看作只是类型不可改变。

        const arr = [12 , 25];
        arr[0] = 48;
        console.log(arr);
        const arr = [12 , 25];
        arr[0] = 48;
        console.log(arr);
        arr = [33, 2]  // 报错: TypeError: Assignment to constant variable.
        console.log(arr);
        const abj = {
            name: '李梅',
            age: 18,
            height: 180
        }
        abj.name = '韩磊';
        console.log(abj);

var  let   const 之间的区别:

  1. 使用 var 声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象;
  2. 使用 let 声明的变量,其作用域为该语句所在的代码块内,不存在变量提升;
  3. 使用 const 声明的是常量,在后面出现的代码中 不能在修改常量的值,但是复合数据类型 可以修改其内部属性;
相关标签: ES6

上一篇:

下一篇: