了解es6变量声明,这一篇就够了!

变量声明(let, const)

  • let
    1.特点:
    (1)let声明的变量具有块级作用域(只在所处的块级内有效)
    代码块
 if (true) {
            let a = 10;
            var b = 20;
        }
        console.log(b);
        console.log(a);

结果
在这里插入图片描述
(2)不存在变量提升
代码块

 console.log(a);
 let a = 20;

结果
在这里插入图片描述
(3)具有暂时性死区的特性
代码块

var num = 20;
        if (true) {
            console.log(num);
            let num = 50;
        }

结果
在这里插入图片描述
2.优点
(1)在业务逻辑比较复杂的时候,能够防止内层变量覆盖外层变量
(2)防止循环变量变成全局变量
eg:
循环变量变成全局变量

 for (var i = 0; i < 3; i++) {}
     console.log(i);

在这里插入图片描述
使用let变量声明

for (let i = 0; i < 3; i++) {}
        console.log(i);

在这里插入图片描述
对于特点(2)变量提升浅谈一下
1.javascript代码执行分为:预解析,代码执行(按照代码书写顺序从上往下执行)
2.预解析分为:变量提升,函数提升
3.变量提升就是把所有的变量声明提升到当前作用域的最前面,不提升赋值操作
变量提升栗子:

 console.log(a);
        var a = 30;
        // 预解析后---------(分界线)
        //var a;
        //console.log(a);
        //a = 30;

在这里插入图片描述

  • const
    作用:声明常量,常量就是指(内存地址),不能变的量
    1.特点
    (1)具有块级作用域(同上略)
    (2)声明常量时必须赋值
    代码块
 //const声明常量时必须赋值
        const P;

结果
在这里插入图片描述
(3)常量赋值后,值不能修改
+对于基本数据类型来讲,一旦赋值,值不可更改(数值or字符串)
+对于复杂数据类型来讲,不能重新赋值(内存地址不可改变),但是可以更改数据结构内部的值(数组or对象)
eg:
基本数据类型

//常量赋值后,值不能修改
        const p = 10;
        p = 100;

在这里插入图片描述
复杂数据类型

const arr = [1, 2];
        arr[0] = 'a';
        arr[1] = 'b';
        console.log(arr);

在这里插入图片描述

综上对var let const 三种变量声明做个总结
在这里插入图片描述
哈哈哈(懒~~)

OVER 加油各位

原文地址:https://www.cnblogs.com/Jdoit-CW/p/es6-variable-isok.html