美文网首页
let,const,与var

let,const,与var

作者: 新苡米 | 来源:发表于2021-04-24 13:06 被阅读0次

    ES6相关概念

    什么是ES6

    ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。
    ES6新增语法

    let

    ES6中新增了用于声明变量的关键字

    let声明的变量只在所处于的块级有效

     if (true) { 
         let a = 10;
     }
    console.log(a) // a is not defined
    

    注意:使用let关键字声明的变量才具有块级作用域,使用var声明的变量不具备块级作用域特性。
    不存在变量提升

    console.log(a); // a is not defined 
    let a = 20;
    
    

    暂时性死区

    利用let声明的变量会绑定在这个块级作用域,不会受外界的影响

     var tmp = 123;
     if (true) { 
         tmp = 'abc';
         let tmp; 
     } 
    
    经典面试题
     var arr = [];
     for (var i = 0; i < 2; i++) {
         arr[i] = function () {
             console.log(i); 
         }
     }
     arr[0]();
     arr[1]();
    
    image.png
    经典面试题图解:此题的关键点在于变量i是全局的,函数执行时输出的都是全局作用域下的i值。
     let arr = [];
     for (let i = 0; i < 2; i++) {
         arr[i] = function () {
             console.log(i); 
         }
     }
     arr[0]();
     arr[1]();
    
    image.png
    经典面试题图解:此题的关键点在于每次循环都会产生一个块级作用域,每个块级作用域中的变量都是不同的,函数执行时输出的是自己上一级(循环产生的块级作用域)作用域下的i值.

    小结

    • let关键字就是用来声明变量的
    • 使用let关键字声明的变量具有块级作用域
    • 在一个大括号中 使用let关键字声明的变量才具有块级作用域 var关键字是不具备这个特点的
    • 防止循环变量变成全局变量
    • 使用let关键字声明的变量没有变量提升
    • 使用let关键字声明的变量具有暂时性死区特性
    const(★★★)

    声明常量,常量就是值(内存地址)不能变化的量

    具有块级作用域

     if (true) { 
         const a = 10;
     }
    console.log(a) // a is not defined
    

    声明常量时必须赋值

    const PI; // Missing initializer in const declaration
    

    常量赋值后,值不能修改

    const PI = 3.14;
    PI = 100; // Assignment to constant variable.
    
    const ary = [100, 200];
    ary[0] = 'a';
    ary[1] = 'b';
    console.log(ary); // ['a', 'b']; 
    ary = ['a', 'b']; // Assignment to constant variable.
    

    小结

    • const声明的变量是一个常量
    • 既然是常量不能重新进行赋值,如果是基本数据类型,不能更改值,如果是复杂数据类型,不能更改地址值
    • 声明 const时候必须要给定值
    let、const、var 的区别
    • 使用 var 声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象
    • 使用 let 声明的变量,其作用域为该语句所在的代码块内,不存在变量提升
    • 使用 const 声明的是常量,在后面出现的代码中不能再修改该常量的值


      image.png

    相关文章

      网友评论

          本文标题:let,const,与var

          本文链接:https://www.haomeiwen.com/subject/ocakrltx.html