• var, let, const三者之间的区别


      

    一   作用域

      js中有全局作用域和局部作用域两种,

      var和let

      相同点:   都是用来声明变量

      不同点: 

       (1) var 是全局声明。 let是局部声明,只在声明的块中有效(块级作用域)

        {
            var a = 1;
            let b = 2;
            console.log(a);   //    1
            console.log(b)    //    2
        }
        console.log(a);       //     1
        console.log(b)        //     b is not defined
    

      

       (2)   var声明存在变量提升。   let 声明不存在变量提升

        console.log(a);       //     undefined
        console.log(b)        //     Uncaught ReferenceError: Cannot access 'b' before initialization  初始化之前无法访问“b”
    
        var a = 1;
        let b = 2;
    

         (3)    let 禁止重复声明变量  

    function fn (){
       var a = 1;
       let a = 2;
       console.log(a); //SyntaxError
    }
    
    function fn (){
       let a = 1;
       let a = 2;
       console.log(a); //SyntaxError
    }
    
    function fn (a){
       let a = 2;
       console.log(a); //SyntaxError
    }
    

      const

       const用来定义常量,使用是必须初始化(即必须赋值),同样只能在块级作用域里访问,一旦设置了就不能在修改了(不可重复声明)

    <script type="text/javascript">
        // 块作用域
        {
            var a = 1;
            let b = 2;
            const c = 3;
            // c = 4; // 报错
            var aa;
            let bb;
            // const cc; // 报错
            console.log(a); // 1
            console.log(b); // 2
            console.log(c); // 3
            console.log(aa); // undefined
            console.log(bb); // undefined
        }
        console.log(a); // 1
        // console.log(b); // 报错
        // console.log(c); // 报错
     
        // 函数作用域
        (function A() {
            var d = 5;
            let e = 6;
            const f = 7;
            console.log(d); // 5
            console.log(e); // 6  
            console.log(f); // 7 
     
        })();
        // console.log(d); // 报错
        // console.log(e); // 报错
        // console.log(f); // 报错
    </script>
    

      

  • 相关阅读:
    linux服务器安全配置攻略
    Linux服务器调优
    Tengine + Lua + GraphicsMagick 实现图片自动裁剪/缩放
    nginx缓存设置
    动态缓存技术之CSI,SSI,ESI
    ionic环境配置
    Node.js企业开发:应用场景
    HashMap实现原理、核心概念、关键问题的总结
    《Windows核心编程》读书笔记.Chapter06线程基础
    开发环境eclipse for Mac 下的常用快捷键汇总(基本参照Win系,将Ctrl换为Command)
  • 原文地址:https://www.cnblogs.com/ly-qingqiu/p/10919188.html
Copyright © 2020-2023  润新知