变量let const

一、变量

  1. let
    代码块内有效,无变量提升、不可重复声明

    { let a = 2; }

      for循环非常实用let。

    for (var i = 0; i < 10; i++) {
      setTimeout(function(){
        console.log(i);
      })
    }
    // 这个 var 在全局内有效,而setTimeout 中的 i 指向的是全局的 i; // 输出十个 10

    for (let j = 0; j < 10; j++) { setTimeout(function(){ console.log(j); }) }
    // 变量 j 是用 let 声明的,当前的 j 只在本轮循环中有效,每次循环的 j 其实都是一个新的变量; javaScript引擎会记住前一个循环的值。 // 输出 0123456789

      

  2. const 
    const 声明一个只读变量,声明之后不允许改变。意味着,一旦声明必须初始化,否则会报错。
    对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。
    对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。

    const foo = {}; // 为 foo 添加一个属性,可以成功 foo.prop = 123; foo.prop // 123 // 将 foo 指向另一个对象,就会报错 foo = {}; // TypeError: "foo" is read-only



       

posted @ 2019-11-07 19:00  安博主  阅读(128)  评论(0编辑  收藏  举报