zoukankan      html  css  js  c++  java
  • 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>
    

      

  • 相关阅读:
    .NET笔试题集(四)
    jquery弹出遮掩层
    LINQ学习(八):强制立即执行
    .NET笔试题集(五)
    LINQ学习(六):OrderBy/Group By子句
    .NET笔试题集(二)
    LINQ学习(九):LINQ to SQL简单应用
    TFS Branch脚本
    分享幻灯片+在线阅读
    C#笔记(五):文件和流
  • 原文地址:https://www.cnblogs.com/ly-qingqiu/p/10919188.html
Copyright © 2011-2022 走看看