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;
    })();
  • 相关阅读:
    [USACO5.3]校园网Network of Schools
    [USACO13OPEN]照片Photo

    flask的orm框架----------Flask-SQLAlchemy应用
    Flask-session用法
    flask--自定义auth模块
    flask -falsk_script用法
    Flask-SQLAlchemy数据库
    flask--session源码解析
    flask-源码请求源码
  • 原文地址:https://www.cnblogs.com/jing428/p/6908555.html
Copyright © 2011-2022 走看看