zoukankan      html  css  js  c++  java
  • ES6之let命令

    ES6新增了let命令,用来声明变量。它的用法类似于var。

    let和var声明变量的区别:

    1、let声明的变量,只在let命令所在的代码块内有效,出了这个块级作用域就不起作用

    先看一个例子:

    {
        let a=10;
        var b=1;
    }
    console.log(a);
    console.log(b);

    上述例子运行结果如图:

    以上例子中,分别用var和let声明了两个变量,然后在代码块之外调用这两个变量。let定义的a变量会报错 var声明的变量b会返回正确值.这表明,let声明的变量只在它所在的代码块有效。

    什么是块级作用域?

    任何一对花括号({ })中的语句都属于一个块,在花括号里面用let定义的所有变量在花括号外都是不可见的,我们称之为块级作用域。

    2.用var 声明变量的时候会出现“变量提升“的现象,而let声明变量不存在“变量提升“现象。

    什么是变量提升?

    变量可以在声明之前使用,变量的值为undefined。但let命令改变了该语法行为,它所声明的变量一定要在声明后使用,否则报错。

    例子1:

    //var的情况
    console.log(a); var a=10;
    //let的情况 console.log(b); let b=100;

    上述例子运行结果如图:

    上面代码中,变量a用var命令声明,会发生变量提升,即脚本开始运行时,变量a已经存在了,但是没有值,所以会输出undefined。变量blet命令声明,不会发生变量提升。这表示在声明它之前,变量b是不存在的,这时如果用到它,就会抛出一个错误。

    例子2:

    var a = 10;
    (function(){
      console.log(a);
      var a = 20;
    })();
    

    上述例子运行结果:undefined

    上面代码中,代码一开始已经定义了变量a,值为1,相当于全局变量,但是我们在代码块(函数内)里面还声明并定义了一个变量a,导致变量提升了,实际的代码执行顺序是这样的,

    var a = 10;
    (function(){
       var a;
       console.log(a);//先执行声明,接着就执行console.log(a);变量a只是声明还没定义,值便为undefined了。
       a = 20;
    })();
  • 相关阅读:
    Java基础之在窗口中绘图——移动曲线的控制点(CurveApplet 3 moving the control points)
    【javascript】BOM介绍
    【javascript】Web Storage机制
    【javascript】50. Pow(x, n)
    【java】6. ZigZag Conversion
    【java】最长回文字符串(源码)
    【javascript】js实现单例模式
    【js注入】js注入
    【bootstrap】bootstrap可关闭警告框
    【h5】h5数据跨域交换postMessage用法
  • 原文地址:https://www.cnblogs.com/jing428/p/6908555.html
Copyright © 2011-2022 走看看