拥抱ECMAScript 6

作者: fullbook | 来源:发表于2016-08-14 09:57 被阅读54次

    ES6带来了许多好东西,它们能够使我们开发出更快更好的web应用,目前虽兼容性不够完美,但我们可以通过一些前端工具转化为浏览器看得懂的东西,最主要的是技术在不断的进步,兼容的脚步正慢慢的迈进。
    在ES6中存在多个可以缩短开发时间并加快应用运行速度的语法糖

    1、let和const

    这两个关键字非常有用。它们都允许我们在一个作用域中定义一个变量,但在作用域外它无法被获取,其中let用于普通变量,const用于常量 (一旦定义,就不会改变):
    <pre>// es5
    (function() {
    var a = 2;
    }());
    console.log(a); // undefined
    // es6
    function x() {
    let a = 2;
    a = a + 2;
    }
    console.log(a); //undefined
    </pre>

    2、解构:将一个对象转变成分开的变量

    <pre>var point = {x:1, y:2};
    var [x, y] = point;
    console.log(x); //1
    console.log(y); //2
    </pre>
    解构的另一个用途是在一个函数中返回不同的值 – 不在需要返回一个对象。
    <pre>// es5
    function returnFun() {
    return {
    x: 1,
    y: 2
    }
    }
    // es6
    function returnFun() {
    return [1, 2];
    }</pre>

    3、模板字符串

    许多人都很怀念JavaScript中的模板字符串。它们不仅允许我们轻松的在代码中插入变量,而且可以防止各种攻击来保证安全输出。模板字符串使用反撇号来定义。其中,你可以使用一个$符号以及花括号来插入可执行的代码或者变量:
    <pre>var name = 'John', surname = 'Doe';
    var template1 = Hello! My name id ${name} ${surname}!;
    console.log(template1);
    var a = 1, b = 2, c = 3;
    var template2 = ${a} + ${b} - ${c} / 2 = ${a + b - c/2};
    console.log(template2); // 1 + 2 - 3/2 = 1.5
    </pre>

    4、标签

    你也可以在模板字符串前面定义一个标签。标签是一个函数,它将解析模板字符串中的部分,因此你可以处理一些用户生成的内容。ES6中已经有一些默认的标签了。最有用的一个,我认为是safehtml标签。简单来说,它能探测出一些不安全的内容例如XSS攻击等等,并将它们转化为无害的值:
    <pre>var template = safehtml<a href="${someUserdefinedVariable}">Click me!</a>;</pre>

    5、赋值语法糖 destructing & spread

    destructing: 通过表达式的右边值来同时对左边的多个值进行赋值
    <pre>var [a,b,c]=[1,2,3]; //通过数组给多个变量赋值
    var {name, age} = {name: "Tom", age:12} //通过一个对象来给多个变量赋值</pre>
    上面分别用一个数组和一个对象对多个变量进行赋值,并严格一一对应,我们还可以在赋值的时候省略掉一些属性:
    <pre>var [a, ,c]=[1,2,3]; //忽略数组中的第二个
    var {name, age} = {name: "Tom", age:12, gender: "male"} //通过一个对象来给多个变量赋值</pre>

    6、模板(export和import)

    modules是ES6引入的最重要一个特性。 所以以后再写模块,直接按照ES6的modules语法来写,然后用 babel + browserify 来打包就行了。modules规范分两部分,一部分是如何导出,一部分是如何导入。

    命名导出(named exports)

    可以直接在任何变量或者函数前面加上一个 export关键字,就可以将它导出。 这种写法非常简洁,和平时几乎没有区别,唯一的区别就是在需要导出的地方加上一个export 关键字。
    <pre>export const sqrt = Math.sqrt;
    export function square(x) {
    return x * x;
    }
    export function diag(x, y) {
    return sqrt(square(x) + square(y));
    }
    </pre>

    然后在另一个文件中这样引用:
    <pre>import { square, diag } from 'lib';
    console.log(square(11)); // 121
    console.log(diag(4, 3));
    </pre>

    未完,待续。(今晚更新)

    相关文章

      网友评论

        本文标题:拥抱ECMAScript 6

        本文链接:https://www.haomeiwen.com/subject/ootysttx.html