es6中let和const

一. let

相当于var,但所声明的变量只在let命令所在的代码块中有限

1. 变量不提升

  • var 会进行变量提升(即没有声明就可以使用)
<script>
    console.log(a); // undefined
    var a = 10;
</script>
  • let 如果在没有声明的时候使用,则系统会报错。
<script>
    console.log(a); // 报错
    let a = 10;
</script>

2.代码块有效

  • let 只在代码块有效
  • var 在全局有效

3. 不允许重复声明

  • let 不允许在相同作用域中重复声明
{
    let a = 10;
    console.log(a); //10
 }
{
	let a = 10;
    console.log(a);  //报错
    let a = 20;
    console.log(a);  //报错
}

4. 块级作用域

  • 外层不受内层代码块影响
  • 内层可以定义外层的同名变量
  • 允许块级作用域任意嵌套
  • 代替了立即执行函数的表达式
  • 可在块级作用域声明函数,外层不可引用。

二. const

1. 声明一个只读的常量,在声明时必须赋值,且该值不可改变。

    <script>
        const a;
        console.log(a); //报错
    </script>
    <script>
        const a;
        a = 10;
        console.log(a); // 报错
    </script>
    <script>
       const a = 10;
        console.log(a); //10
        a = 20;
        console.log(a); //报错(不能给常量继续赋值)
    </script>

2. 不提升,不可重复声明

    <script>
       console.log(a); // 报错
        const a = 10;
    </script>
    
    <script>
       const a = 10;
       console.log(a);  // 报错
       const a = 20;
       console.log(a);  //报错
    </script>

3. 注意: const 声明常量,但是如果是引用型的,即只是确定他的内存地址,里面可以修改,例如:数组,对象等

	<script>
        const a = [1,2,3,4];
        console.log(a);
        a.push(5);
        console.log(a);
    </script>

在这里插入图片描述

    <script>
	    const obj = {
	        a: 10,
	        b: 50
	    }
	    console.log(obj);
	    obj.a = 123;
	    console.log(obj);
    </script>

在这里插入图片描述

发布了24 篇原创文章 · 获赞 26 · 访问量 2719

猜你喜欢

转载自blog.csdn.net/apple_2021/article/details/101427457