zoukankan      html  css  js  c++  java
  • ES6详解

    1.ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

    const声明常亮,不可改变

    2.变量的解构赋值

    (1)数组的解构赋值:

    以前,为变量赋值,只能直接指定值。

    var a = 1;
    var b = 2;
    var c = 3;
    

    ES6允许写成下面这样。

    var [a, b, c] = [1, 2, 3];
    

    上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。(如果解构不成功,变量的值就等于undefined。)

    var [foo] = [];
    var [bar, foo] = [1];
    

    以上两种情况都属于解构不成功,foo的值都会等于undefined

    (2)对象的解构赋值

    解构不仅可以用于数组,还可以用于对象。

    var { foo, bar } = { foo: "aaa", bar: "bbb" };
    foo // "aaa"
    bar // "bbb"
    

    对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

    var { bar, foo } = { foo: "aaa", bar: "bbb" };
    foo // "aaa"
    bar // "bbb"
    
    var { baz } = { foo: "aaa", bar: "bbb" };
    baz // undefined
    

    上面代码的第一个例子,等号左边的两个变量的次序,与等号右边两个同名属性的次序不一致,但是对取值完全没有影响。第二个例子的变量没有对应的同名属性,导致取不到值,最后等于undefined

    (3)字符串解构赋值

    字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。

    const [a, b, c, d, e] = 'hello';
    a // "h"
    b // "e"
    c // "l"
    d // "l"
    e // "o"
    

    类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值。

    let {length : len} = 'hello';
    len // 5

    (4)函数解构赋值

    函数的参数也可以使用解构赋值。

    function add([x, y]){
      return x + y;
    }
    
    add([1, 2]); // 3
    

    上面代码中,函数add的参数表面上是一个数组,但在传入参数的那一刻,数组参数就被解构成变量xy。对于函数内部的代码来说,它们能感受到的参数就是xy

    下面是另一个例子。

    [[1, 2], [3, 4]].map(([a, b]) => a + b);
    // [ 3, 7 ]
    

    函数参数的解构也可以使用默认值。

    3.字符串扩展

    (1)ES6为字符串添加了遍历器接口,使得字符串可以被for...of循环遍历。

    for (let codePoint of 'foo') {
      console.log(codePoint)
    }

    (2)repeat方法返回一个新字符串,表示将原字符串重复n次。

    'x'.repeat(3) // "xxx"
    'hello'.repeat(2) // "hellohello"
    'na'.repeat(0) // ""

    (3)模板字符串

    传统的JavaScript语言,输出模板通常是这样写的。

    $('#result').append(
      'There are <b>' + basket.count + '</b> ' +
      'items in your basket, ' +
      '<em>' + basket.onSale +
      '</em> are on sale!'
    );
    

    上面这种写法相当繁琐不方便,ES6引入了模板字符串解决这个问题。

    $('#result').append(`
      There are <b>${basket.count}</b> items
       in your basket, <em>${basket.onSale}</em>
      are on sale!
    `);

    (4)模板编译

    下面,我们来看一个通过模板字符串,生成正式模板的实例。

    var template = `
    <ul>
      <% for(var i=0; i < data.supplies.length; i++) { %>
        <li><%= data.supplies[i] %></li>
      <% } %>
    </ul>
    `;
    

    上面代码在模板字符串之中,放置了一个常规模板。该模板使用<%...%>放置JavaScript代码,使用<%= ... %>输出JavaScript表达式。

    
    
    
    




  • 相关阅读:
    windbg vmware win7联机调试环境搭建
    c++回调实现
    导出函数,非导出函数,公开函数,非公开函数
    fileAPI 实现移动端 添加图片 预览缩略图(自己学习)
    Ztree _ 横向显示子节点、点击文字勾选、去除指定元素input的勾选状态
    仿微信公众平台“打标签”功能~~~
    踩坑之路_"var name = ' ';"_迷之BUG
    asp.net页面生命周期《转》
    2009年软件设计师考试大纲<软考>
    typedef用法总结。
  • 原文地址:https://www.cnblogs.com/SunShineKG/p/6180297.html
Copyright © 2011-2022 走看看