zoukankan      html  css  js  c++  java
  • let和var

    1.let  对比 var

    let的作用域是块,而var的作用域是函数

    var a=5;
    var b=10;
    if(a===5){
          let a=4;//the scope is inside the if-block
          var b=1;//the scope is inside the function
          console.log(a);//4
          console.log(b);//1
       }
    console.log(a);//5
    console.log(b);//1

    2.let 在循环中

    可以用 let 来代替 var ,在 for 定义块中使用块级变量.用let定义的变量,只在for循环和if循环中,出了循环内存中就不存在了而用var定义的始终存在于内存中。

    //例如1
    for(let i=0;i<10;i++){
         console.log(i);//0,1,2,3,4,5,....9
        }
    console.log(i);//i is not defined
    //例如2
    function varTest(){
           var x=1;
           if(true){
                var x=2;//同样的变量
                console.log(x);//2
                  }
           console.log(x);//2
        }
    function varTest(){
           var x=1;
           if(true){
                let x=2;//不同的变量
                console.log(x);//2
                  }
           console.log(x);//1
        }

    3.let块let block)

    var x=5;
    var y=0;
    let(x=x+10,y=12){
          console.log(x+y);//27
        }
    console.log(x+y);//5

    下面的运行结果是?

    1 for(let i=0;i<12;i++){}console.log(i);//i not defined 
    2 const a=12;a=13;console.log(a); //TypeError 
    
    3 const g={b:3};console.log(g.b); g.b=12; console.log(g.b); //3,12
    
    4 let [head,...tail]=[1,2,3,4];console.log(tail);//[2,3,4]
    1.let 与var不同,存在块级作用域,在for循环中声明,循环之外销毁 所以 i not defined
     
    2.const 声明一个常量无法更改,所以TypeError
     
    3.const 声明的是一个常量所以是无法更改的
    1
    2
    3
    4
    const a={x:1};
        console.log(a.x);
        a.x=5;
        console.log(a);//Object {x: 5}
     在这里打印出来 a 是一个对象 且他的属性x 的值为5,但是!!如果const出来的是一个对象他的属性是可以更改的,别问为啥~
    -------------------------------------------------------------------------------------------------------------------------------------------------------
    使用var要注意的:
    (function() {
          var a = b = 5;
      })();   
    console.log(b);//5
    console.log(a);//undefined
    1.var操作符
    使用var操作符定义的变量将成为该变量的作用域中的局部变量,如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁;
    省略var操作符会创建一个全局变量,但在局部作用域中定义的全局变量很难维护,也会由于相应变量不会马上就有定义而导致不必要的混乱,给未经声明的变量赋值在严格模式下会导致抛出Reference错误,所以不推荐使用。
    function noVar(){
    message="global var";//全局变量
    }
    noVar();
    console.log(message);
    2.解析
    var a=b=1;>> var a=b;b=1;
    首先使用var初始化变量a赋值为b,b未定义,a=undefined;省略var初始化变量b为全局变量,b=1。
  • 相关阅读:
    Android学习笔记(四) 定时器Timer
    Android学习笔记(三) UI布局
    JAVA 抽象类、接口
    JAVA 类与对象
    React使用Ant Design Mobile结合rc-form进行表单验证
    JS学习笔记--为同种类型控件添加事件,无法应用循环变量的解决办法
    CSS学习笔记--圣杯布局与双飞翼布局
    CSS学习笔记--flex弹性布局
    CSS学习笔记--浮动元素由于浏览器页面缩小而被挤到下面的解决方法
    CSS学习笔记--导航栏元素由于页面缩小而被挤到下一行的解决方法
  • 原文地址:https://www.cnblogs.com/aixiuxiu/p/6539151.html
Copyright © 2011-2022 走看看