zoukankan      html  css  js  c++  java
  • ES6——let、const和var的区别

    let定义变量,const定义常量。

    const声明的常量,一旦申明,不可修改。

    var 和 let 都可以申明变量,那它们的区别在哪呢。

      var let
    变量提升  √  
    没有申明,可以使用  √   
    可重复申明  √  
    在实际开发中(建议) web,低版本的浏览器不支持let。 小程序,uniapp等。

    变量提升

    在没有定义的情况下,输出一个变量。会报not defined

     在定义语句的上面输出变量,就会输出undefined。

     可重复申明:

        <script>
            var a = 1;
            var a = 10;
            console.log(a);  //输出 10,a的值被覆盖。
    
            var b = 1;
            let b = 1;
            console.log(b);  //报错:Identifier 'b' has already been declared(标识符 b 已声明)
    
            let c = 3;
            let c = 3;
            console.log(c);  //报错:Identifier 'c' has already been declared(标识符 c 已声明)
        </script>

    let 和 const 解决了上面问题:

    1.var 的 变量穿透问题。

    2.常量修改的问题(只会被覆盖)

    变量穿透:

    <script>
        for(var i=0; i<5; i++){
            console.log(i);
        }
    
        console.log(i);
    </script>

    结果:

    浏览器控制台输出了 1到5,造成了变量穿透。

    <script>
        for(let i=0; i<5;i++){
             console.log(i);
        }
    
        console.log(i);
    </script>

    结果:

     let有作用域的概念,它只在let命令所在的代码块内有效,非常适用于 for 循环。

    常量修改:

    <script>
        var PI = Math.PI;
        var PI = 100;
        console.log(PI); 
    </script>

    结果:

     常量PI的值被覆盖。

    <script>
        const PI = Math.PI;
        PI = 100;
        console.log(PI); 
    </script>

    结果:

     const一旦声明不可修改。

  • 相关阅读:
    Jmeter执行流程分析
    curl获取公网IP地址
    搭建redis集群
    基于bind搭建DNS主从
    centos7设置iptables
    rabbitmq常用命令
    防火墙
    定时任务和配置中心
    Maven中pom.xml配置文件详细介绍
    Grafana+Prometheus监控
  • 原文地址:https://www.cnblogs.com/nyfq/p/14583920.html
Copyright © 2011-2022 走看看