zoukankan      html  css  js  c++  java
  • ES6中新增let命令使用方法

       在ES6中新增了let命令,该命令的用法与var 类似,但是所声明的变量只能在let命令所在的代码块(最接近let 命令的大括号内)中有效果。但是let 又有一些不同于var 的特性。

    1.let定义的变量的生命周期只存在与定义的块级作用域中

                {
                    let a = 12;
                    var b = 1;
                }
                console.log(b);//1
                console.log(a);// Uncaught ReferenceError: a is not defined
                

    输出结果:b 为1,a为未定义 ,这说明let 定义的变量只能在属于自己的块级作用域使用,而var 定义的变量可以在块级作用域 之外使用。

    2..let定义的变量不允许重复定义

                   {
                    let a = 12;
                     let a=32;
                    var b = 1;
                    var b = 14;
                    console.log(b);
                    console.log(a);
                }

    以上代码会报错 Identifier 'a' has already been declared,let 定义的变量不允许重复定义,而var 可以重复定义一个变量。

    3.let定义变量的优先级比var定义的变量的优先级高

     若同时使用var 和let  定义同一个变量 let 优先完成定义,并按照第二条的规则let定义的变量不允许重复定义。

    4.在for循环中使用let 定义的变量 只在本循环中有效果

        var a = [];
            for (var i = 0; i < 10; i++) {
              a[i] = function () {
                console.log(i);
              };
            }
            a[6](); //10
        var a = [];
            for (let i = 0; i < 10; i++) {
              a[i] = function () {
                console.log(i);
              };
            }
            a[6](); //6

    使用var  定义的for循环输出结果为10 使用let 定义的变量输出如果为6,这是因为使用let定义的变量只在本轮循环中有效,而var  定义的变量循环结束之后还有效。

    5.暂时性死区

    console.log(a)//let使用.html:9 Uncaught ReferenceError: Cannot access 'a' before initialization
    let  a=12;

    以上代码会报错,是因为使用let 定义的变量不存在变量提升,这是为了使程序员编写 的代码尽可能规范。若不用let定义a就存在变量提升的概念进而就不会报错。这里需要引入一个概念叫暂时性死区,

    定义为:如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

    暂时性死区就很好的定义了以上代码为什么会报错的原因。

  • 相关阅读:
    Vim
    CMake学习之路
    linux tree命令以树形结构显示文件目录结构
    代码阅读软件Understand安装
    ROS学习之ShadowRepository
    WPF初学(一)——布局【良好界面的基础】
    浅学JSON——Json.NET之首次试手
    JSON资料汇总
    自定义视图 视图控制器(UIViewController)
    UIView Subclass(UI,UIButton,UITextField,UILabel)
  • 原文地址:https://www.cnblogs.com/lin494910940/p/javasecrpt.html
Copyright © 2011-2022 走看看