zoukankan      html  css  js  c++  java
  • 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)解构赋值的用途

  • 相关阅读:
    Centos7安装Redis-单节点
    解决物理机U盘安装Kali Linux2018.1,光驱无法加载问题
    做销售如何跟单,逼单!共20招!(转)
    销售沟通技巧(转)
    rails gem (2015-07-16)
    Foundation
    Redis TTL 为0
    Introspection反射机制
    will_paginate
    Linux下Rsync+Inotify-tools实现数据实时同步
  • 原文地址:https://www.cnblogs.com/hiluna/p/9275777.html
Copyright © 2011-2022 走看看