码迷,mamicode.com
首页 > 其他好文 > 详细

let和const变量学习

时间:2018-11-07 23:07:23      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:define   部分   外部   func   code   区域   size   作用   err   

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变量学习

标签:define   部分   外部   func   code   区域   size   作用   err   

原文地址:https://www.cnblogs.com/ckafter/p/9926155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!