2rever的前端小站

let以及const笔记

Word count: 484 / Reading time: 3 min
2018/11/20 Share

let 及 const

  • let

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    // {
    // var a = 10;
    // console.log(a); //=> 10
    // }

    // console.log(a); // a => 10


    // 变量提升和函数提升
    fun();

    function fun() {
    console.log(a);

    var a = 99;
    console.log(a);
    }

    // let 和const
    // 1. let:变量,有块级的作用域
    {
    let b = 100;
    console.log(b); // b => 100

    }

    console.log(b); // 报错

    // 2. let 声明变量,没有变量提升。而且有暂时性死区

    {
    console.log(b); // ReferenceError: b is not defined

    let b = 'aicoder.com';

    console.log(b);
    }

    // 3. 配合for循环可以解决我之前的

    for(var i = 0; i < 10; i++) {
    setTimeout(()=>{
    console.log(i);
    }, 4);
    }

    // 闭包解决方法
    for(var i = 0; i < 10; i++) {
    (function(index) {
    setTimeout(()=>{
    console.log(index);
    }, 4);
    })(i)
    }

    // 用let声明的方法,解决循环索引的问题
    for(let i = 0; i < 10; i++) {
    // let i = 0
    setTimeout(()=>{
    console.log(i);
    }, 4);
    }

    // 4. let不能重复声明变量

    let a = 10;
    let a = "aicoder.com"; // SyntaxError: Identifier 'a' has already been declared

    // 5. let声明的变量不会添加到 全局对象上去。

    var a = 10;
    console.log(window.a);

    let b = 11;
    console.log(window.b);
  • const

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    // 1. const 声明后,需要立即赋值。后续不能修改

    const a = 10;
    a = 19; // TypeError: Assignment to constant variable.

    const b ; // SyntaxError: Missing initializer in const declaration
    b = 199;

    // 2. const 声明的变量,也是有暂时性死区

    {
    console.log(a); // ReferenceError: a is not defined
    const a = 'aicoder.com';
    console.log(a);
    }

    // 3. const 与复杂类型

    const stu = {}; // 要求指向的 具体的内存地址不能修改。

    stu.age = 20;

    console.log(stu);

    // 4. const 类型声明的变量也不属于全局对象属性

    const k = 'aicoder.com';

    console.log(window.k);

    // 5. const 不允许进行重复声明

    // 最新权限原则。
CATALOG