1

初步认知

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

  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 声明的变量,声明时必须同时初始化赋值,且不支持修改(可以修改对象内部属性)


阿曾的奶油汤
0 声望3 粉丝

没有感情的专业bug制造机器