逃不掉的varletconst学习

Posted 阿曾的奶油汤

tags:

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

初步认知

基于没有查阅文档以及自己的开发经验对于这三者的认知如下

  1. 三者都是用于声明变量,const最好区分,一般用于声明常量,声明后赋值后的变量无法重新进行赋值,(有的面试会问const的对象能否重新赋值,对于整个变量会报错,但是可以重新赋值key和value,这一点接下来会仔细说说)
  2. var是贯穿js的,let和const是es6之后诞生的
  3. let拥有暂时性死区特性,下面会具体展示
  4. var拥有变量提升特性,

以上是仅凭面试功底以及经验暂时想出的,接下来接合代码和文档展开说说

变量作用域

  1. var 在函数作用域中声明为局部变量,在 {} 代码块或者全局中声明为全局变量,如for、if语句
  2. let & const 声明的变量仅在当前作用域中生效

    let btns = document.getElementsByTagName(\'button\');
    for (var i = 0; i <= btns.length; i++) {
      btns[i].addEventListener(\'click\', function () {
     console.log(i);
      });
    } // 每次点击button 显示的会是几

重复声明

  1. var 可以重复声明,letconst 不可重复声明

    var name = \'abc\';
    var name = \'def\';
    console.log(name) //\' def\'
    
    let age = 18;
    let age = 28;
    // 报错

在全局作用域下,var 声明的变量会成为 window 对象的属性, letconst 不会;

变量提升

  1. 只有 var 声明的变量会自动提升到函数作用域顶部

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

const 声明的变量,声明时必须同时初始化赋值,且不支持修改(可以修改对象内部属性)

以上是关于逃不掉的varletconst学习的主要内容,如果未能解决你的问题,请参考以下文章

后端程序员逃不掉的幂等设计

离不开的微服务,逃不掉的 RPC | 极客时间

分库分表的 4种分片策略,所有 SQL 都逃不掉的一步

Python GUI篇——关不掉的小窗口

C# Thread开启线程的几种方式

STC的官网,是我永远忘不掉的炼丹炉