• ES6


    笔记参考以下链接:

    阮一峰es6 http://es6.ruanyifeng.com/

    1, ECMAScript2015,ES6,JavaScript,java区别与联系

    (1)ECMA标准化组织,ECMAScript是标准,JavaScript是实现

    (2)ECMAScript2015(ES2015)在2015年6月发布的ES6的第一个版本,ES6泛指JS5.1版本之后的下一代标准

    (2)JavaScript与java基本上没有啥关系,如果要说有的话,那也是JavaScript在起名字的时候蹭了Java的热度而已。

    2,let,const 与 var

    (1)声明与赋值

    let 声明变量(对同一变量不能重复赋值),

    const 声明常量(声明与赋值在一起,而且赋值后,值不能发生变化),

    var 声明变量(神一般的存在,可重复赋值,可变量提升)

    console.log(a); //Uncaught ReferenceError: a is not defined; let无变量提升
    let a=1; let a=2; //Uncaught SyntaxError: Identifier 'a' has already been declared
    const b; //Uncaught SyntaxError: Missing initializer in const declaration

    console.log(c); //undefined; c变量声明提升
    var c=1; //var可以重复赋值(很容易引起错误)
    var c=2;

    (2)暂时性死区

    在 let 和 const 存在的区块内,会绑定该区块,形成封闭作用域。

    在变量未声明之前,是该变量的暂时性死区,引用该变量会抛出错误

    (3)作用域(全局作用域,函数作用域,块级作用域)

     ES5 仅存在全局作用域和函数作用域, ES6 新增了块级作用域

      i,为啥要使用块级作用域(不使用会出现什么问题)

      问题一:内层变量可能覆盖外层变量

      问题二:计数循环的变量泄露为全局变量

      ii,块级作用域内可以声明函数

      方法:

    if(true){
        let a=1;
        let b = function() {  // 块级作用域内声明函数,要写成函数表达式的形式,避免使用函数声明形式
            alert(b);
        };
    }

    (4)顶层对象

    浏览器环境:window

    node环境:   global

    es5 : 同全局变量

    es6: var 和 function 声明的全局变量是顶层对象; let 和 const 和class 和 import声明的全局变量不是顶层对象

    3,解构赋值

    (1)特点

      i,左右两边结构必须一致(模式匹配)

      ii,右边必须是个东西(必须是可遍历的解构)

      iii,声明和赋值不能分开(必须在一句话内完成)

    let [a, b, c] = [1, 2, 3];  //数组解构赋值,其中a=1, b=2, c=3
    let {aa, bb} = {aa:1, bb:2};  //json解构赋值,其中aa=1, bb=2;
    let {foo:bar} = {box:1}; // 解构失败,则bar=undefined

    //使用默认值,当右边的某一成员 === undefined 时,才会使用默认值
    let [x=1, y=2,z=x] = [11,null]; //x=11, y=null, z=2. 因为null== undefined,但是不是严格相等,所以y=null; 右边的z没有赋值,=== undefined,所以使用默认值,为x的值
    let [x=f()] = [1]; //x=1,当默认值为表达式,因为右边已经对 x 赋值了,所以f()不会调用当做默认值。

    (2)解构赋值的使用

      i,数组的解构赋值

    let [a, b, c] = [1,2,3]; //a=1, b=2, c=3,  数组按位置分别进行解构赋值

      ii,对象的解构赋值

    let {a:b, c:d} = {a:1, c:2};  //b=1, d=2,

      iii,数值和布尔值的解构赋值

      iv,函数参数的解构赋值

    (3)解构赋值的用途

  • 相关阅读:
    干货:分布式系统详解
    如果有人问你数据库的原理,叫他看这篇文章
    MySQL的B树索引与索引优化
    优化网站性能必备的6种架构方案,你知道吗?
    【干货】手把手教你搭建一套可自动化构建的微服务框架
    你真的理解微服务架构吗
    Android Activity 半透明效果(Translucent)
    Android DatepickerDialog(日期选择器)的使用
    Android搜索自动提示功能 AutocompleteTextView
    Android动态加载ListView中的Item
  • 原文地址:https://www.cnblogs.com/hiluna/p/9275777.html
Copyright © 2020-2023  润新知