拥抱ECMAScript 6

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

1、let和const

这两个关键字非常有用。它们都允许我们在一个作用域中定义一个变量,但在作用域外它无法被获取,其中let用于普通变量,const用于常量 (一旦定义,就不会改变):

// es5
(function() {
var a = 2;
}());
console.log(a); // undefined
// es6
function x() {
let a = 2;
a = a + 2;
}
console.log(a); //undefined

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

var point = {x:1, y:2};
var [x, y] = point;
console.log(x); //1
console.log(y); //2

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

3、模板字符串

许多人都很怀念JavaScript中的模板字符串。它们不仅允许我们轻松的在代码中插入变量,而且可以防止各种攻击来保证安全输出。模板字符串使用反撇号来定义。其中,你可以使用一个$符号以及花括号来插入可执行的代码或者变量:

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

4、标签

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

var template = safehtmlClick me!;

5、赋值语法糖 destructing & spread

destructing: 通过表达式的右边值来同时对左边的多个值进行赋值

var [a,b,c]=[1,2,3]; //通过数组给多个变量赋值
var {name, age} = {name: "Tom", age:12} //通过一个对象来给多个变量赋值

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

6、模板(export和import)

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

命名导出(named exports)

可以直接在任何变量或者函数前面加上一个 export关键字,就可以将它导出。 这种写法非常简洁,和平时几乎没有区别,唯一的区别就是在需要导出的地方加上一个export 关键字。

export const sqrt = Math.sqrt;
export function square(x) {
return x * x;
}
export function diag(x, y) {
return sqrt(square(x) + square(y));
}

然后在另一个文件中这样引用:

import { square, diag } from 'lib';
console.log(square(11)); // 121
console.log(diag(4, 3));

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

你可能感兴趣的:(拥抱ECMAScript 6)