let和const变量学习

Posted ckafter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了let和const变量学习相关的知识,希望对你有一定的参考价值。

1,var全局变量,let块级变量

 var a = [];
    for (let i = 0;/*var i=0*/ i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6]();
    //6   10

    var变量导致全局范围内有效,所以全局只
    有一个变量i,最后输出10而不是6
    
2,for循环有一个特别之处,就是设置循环变量的那部分是一个
   父作用域,而循环体内部是一个单独的子作用域。

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

3,let不存在变量提升:
   var存在变量提升现象,var声明之前调用对象输出undefinedvar存在变量提升现象,var声明之前调用对象输出undefined
   let 则不存在这种现象所以直接报错。
   
4,暂时性死区:
    只要块级作用域内存在let命令,它所声明的变量就“绑定”

 这个区域,不在受外部的影响
 var tmp = 123;
 if (true) {
   tmp = ‘abc‘; // ReferenceError
   let tmp;
 }

    暂时性死区表明typeof不再是一个百分百安全的操作
    typeof处于let声明前是在暂时性死区中会报错,
    当并没有声明typeof的变量时反而不报错,结果为undefined














以上是关于let和const变量学习的主要内容,如果未能解决你的问题,请参考以下文章

ECMAScript 6 学习 let 和 const命令

ECMAScript 6 入门学习笔记——let和const

JavaScript ES6 的let和const

ES6学习笔记之let和const

ES6学习笔记之let和const

ES6学习 第一章 let 和 const 命令