zoukankan      html  css  js  c++  java
  • var let const 区别

     // var let const 区别
            // ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景,
          
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>var</title>
        <script>
            window.onload = function(){
                var aLi = document.getElementsByTagName('li');
                for (var i=0;i<aLi.length;i++){  /*将var改为let*/
                  aLi[i].onclick = function(){
                  alert(i);    /*单击任何标签都输出4*/
            }
        }
    }
        </script>
    </head>
    <body>
        <ul>
            <li>0</li>
            <li>1</li>
            <li>2</li>
            <li>3</li>
    </ul>
    </body>
    </html>
            // 在ES6之前,大部分人会选择使用闭包来解决这个问题,今天我们使用ES6提供的let来解决这个问题。


    // 1.0 var声明的变量会挂在window上,而let和const不会 var a=100 console.log(a,window.a) //100 100 let b=100 console.log(b,window.b) // 100 undefined const c = 1; console.log(c,window.c); // 1 undefined // 2.0 var声明的变量存在变量提示,let和const不存在变量提示 console.log(d); // undefined (d已声明还没赋值,默认得到undefined值) var d = 100; console.log(e); // 报错:Uncaught ReferenceError: Cannot access 'e' before initialization let e = 10; console.log(f); // 报错:Uncaught ReferenceError: Cannot access 'e' before initialization const f = 10; // 3.0 let和const声明形成块级作用域 if(true){ var g=100; let h=10; const i=10; } console.log(g) //100 console.log(h) //Uncaught ReferenceError: h is not defined console.log(i) //Uncaught ReferenceError: i is not defined //4.0 同一作用域下let和const不能声明同名变量,而var可以 var a1 = 100; console.log(a); // 100 var a2 = 10; console.log(a); // 10 let a3 = 100; let a3 = 10; // 5.0 暂存死区 var a4=100; if(1){ //在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a, // 而这时,还未到声明时候,所以控制台Error:a is not defined a4=10; let a4=1; } // 6.0const // 1、一旦声明必须赋值, //  2、声明后不能再修改 // 3、如果声明的是复合类型数据,可以修改其属性 const a5 = 100; const list = []; list[0] = 10; console.log(list);  // [10] const obj = {a:100}; obj.name = 'apple'; obj.a = 10000; console.log(obj);  // {a:10000,name:'apple'}
  • 相关阅读:
    今年暑假不AC
    Java类的生命周期
    Java反射机制
    Java环境变量的配置及使用
    javaIO流(一)
    ftp服务器测试
    linux下svn使用及查看杀掉进程
    网络配置学习
    网络配置指令
    dos攻击与防御
  • 原文地址:https://www.cnblogs.com/zhuMother/p/12988705.html
Copyright © 2011-2022 走看看