zoukankan      html  css  js  c++  java
  • ES6新增语法--let

    什么是ES6

    ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。

    为什么使用 ES6 ?

    每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语言本身也有一些令人不满意的地方。

    • 变量提升特性增加了程序运行时的不可预测性

    • 语法过于松散,实现相同的功能,不同的人可能会写出不同的代码

    ES6新增语法

    let(★★★)

    ES6中新增了用于声明变量的关键字

    let声明的变量只在所处于的块级有效

     if (true) { 
        let a = 10;
    }
    console.log(a) // a is not defined

    注意:使用let关键字声明的变量才具有块级作用域,使用var声明的变量不具备块级作用域特性。

    不存在变量提升

    console.log(a); // a is not defined 
    let a = 20;

    暂时性死区

    利用let声明的变量会绑定在这个块级作用域,不会受外界的影响

     var tmp = 123;
    if (true) {
        tmp = 'abc';
        let tmp;
    }

    经典面试题

     var arr = [];
    for (var i = 0; i < 2; i++) {
        arr[i] = function () {
            console.log(i);
        }
    }
    arr[0]();
    arr[1]();

    经典面试题图解:此题的关键点在于变量i是全局的,函数执行时输出的都是全局作用域下的i值。

     let arr = [];
    for (let i = 0; i < 2; i++) {
        arr[i] = function () {
            console.log(i);
        }
    }
    arr[0]();
    arr[1]();

    经典面试题图解:此题的关键点在于每次循环都会产生一个块级作用域,每个块级作用域中的变量都是不同的,函数执行时输出的是自己上一级(循环产生的块级作用域)作用域下的i值.

    小结

    • let关键字就是用来声明变量的

    • 使用let关键字声明的变量具有块级作用域

    • 在一个大括号中 使用let关键字声明的变量才具有块级作用域 var关键字是不具备这个特点的

    • 防止循环变量变成全局变量

    • 使用let关键字声明的变量没有变量提升

    • 使用let关键字声明的变量具有暂时性死区特性

  • 相关阅读:
    WeakHashMap回收时机结合JVM 虚拟机GC的一些理解
    java socket 模拟im 即时通讯
    记录 serverSocket socket 输入,输出流,关闭顺序,阻塞,PrintWriter的一些问题.
    Socket 参数笔记
    MongoDB的DBREF 使用.
    MongoDB,子查询
    MongoDB,分组,聚合
    在SAP Data Intelligence Modeler里创建新的pipeline
    SAP Data Intelligence Modeler里的Kafka Producer和Kafka Consumer
    从SAP Leonardo到SAP Data Intelligence
  • 原文地址:https://www.cnblogs.com/llanq123/p/13843877.html
Copyright © 2011-2022 走看看