• 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;
    })();
  • 相关阅读:
    非模式窗体和模式窗体(转
    一次性帮你解决毕业论文的所有排版问题
    c# Wndproc的使用方法
    ref和out 转
    c# 基本语法(转)
    U盘装/虚拟光驱 装双系统
    U盘启动盘 装系统
    Hibernate查询条件封装对象Expression介绍 Hi
    asp.net实现 gridview 鼠标单击任意字段选中一行 ,并获取数据 Hi
    C#如何取出非公共成员 Hi
  • 原文地址:https://www.cnblogs.com/jing428/p/6908555.html
Copyright © 2020-2023  润新知