zoukankan      html  css  js  c++  java
  • var let const声明变量的区别

    一、声明后未赋值,表现相同

      var varTest;
      let letTest;
      console.log(varTest); //输出undefined
      console.log(letTest); //输出undefined

    也即是说声明后直接使用输出都是一样的undefined

    二、使用未声明的变量,不同

     console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行)
      console.log(letTest); //直接报错:ReferenceError: letTest is not defined

    直接使用没有声明的变量,let直接报错,var的提示未定义:undefined

    三、重复声明同一个变量的时候,不同

      var varTest = 'test var OK.';
      let letTest = 'test let OK.';
     
      var varTest = 'varTest changed.';
      let letTest = 'letTest changed.'; //直接报错:SyntaxError: Identifier 'letTest' has already been declared
     
      console.log(varTest); //输出varTest changed.(注意要注释掉上面letTest变量的重复声明才能运行)
      console.log(letTest);

    var 重复声明,第二次声明会覆盖第一次声明的值

    let重复声明会报错

    四、变量作用域不同

    {
      var varTest = 'test var OK.';
      let letTest = 'test let OK.';
     
      {
        var varTest = 'varTest changed.';
        let letTest = 'letTest changed.';
      }
     
      console.log(varTest); //输出"varTest changed.",内部"{}"中声明的varTest变量覆盖外部的letTest声明
      console.log(letTest); //输出"test let OK.",内部"{}"中声明的letTest和外部的letTest不是同一个变量
    }

    大括号包裹的是一个作用域,不同;作用域let声明的变量只在当前的作用域里面有用,和另一个作用域里面的let声明的变量是两个不同的变量,互相不会有影响

    var是函数作用域,let是块级作用域
    五,变量提升
    var支持变量提升,let不能变量提升
    六、const特性
    支持块级作用域,const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。


    原文链接:https://blog.csdn.net/lyc2786161648/article/details/86429375

  • 相关阅读:
    JS学习笔记11_高级技巧
    【应用】wamp3.x.x设置,让外网能够访问本服务器
    数据建模(二)
    数据建模浅析(一)
    saltstack(四) saltstack的targeting、分组
    saltstack(三) grains、pillar的使用
    saltstack(二) master、minion常用配置选项
    dstat系统分析工具的使用
    PC蓝牙通信C#代码实现
    开源GIS-对比GeoServer和MapServer
  • 原文地址:https://www.cnblogs.com/yangc6925/p/14523070.html
Copyright © 2011-2022 走看看