专注于快乐的事情

需要知道的ECMAScript 6语法

本文于1135天之前发表,文中内容可能已经过时。

#ECMAScript 6常用语法

let与const关键字

let关键字可以由一个块作用域。由于var关键字的作用范围是一个函数,它有时候会导致一些意想不到的bug。为此,我们可以用let来代替var来避免此类bug。

const 用于定义常量,其值不可改变。

##默认参数

在ES6之前,不能直接为函数的参数指定默认值,只能采用如下方式:

function log(x, y) {
  y = y || 'World';
  console.log(x, y);
}

使用ES6

function foo(bar="baz") {

console.log(bar);

}

##箭头函数

类似与Java 8,ES6允许使用“箭头”(=>)定义函数。

var f = v => v;

等同于:

var f = function(v) {
 return v;
};

=>操作符左边为输入的参数,而右边则是进行的操作以及返回的值。

如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。

var f = () => 5;
// 等同于
var f = function (){ return 5 };

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
  return num1 + num2;
};

如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。

var sum = (num1, num2) => { return num1 + num2; }

##解构

ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。可见近似的理解为批量赋值。

数组形式

let [x,y] = [3,4,5]; // x=3, y = 4
[x, y = 'b'] = ['a'] // x='a', y='b',默认值

对象的解构赋值

 var { foo, bar } = { foo: “aaa”, bar: “bbb” }; // foo =”aaa” bar =”bbb”
var { foo: baz } = { foo: “aaa”, bar: “bbb” }; //baz = “aaa”,变量名与属性名不一致

##模板

你可以在你的语句中像下面这样内嵌JavaScript变量:

var firstName = “Jack”;

var message = Hello ${firstName}!; // “Hello Jack!”

模块系统

在ES6标准中,JavaScript原生支持module了,将不同功能的代码分别写在不同文件中,各模块只需导出公共接口部分,然后通过模块的导入的方式可以在其他地方使用。

导出

// circle.js

export function area(radius) {
  return Math.PI * radius * radius;
}

export function circumference(radius) {
  return 2 * Math.PI * radius;
}

使用export命令定义了模块的对外接口以后,其他JS文件就可以通过import命令加载这个模块(文件)。

// main.js

import { area, circumference } from './circle';

console.log("圆面积:" + area(4));
console.log("圆周长:" + circumference(14));

参考

评论系统未开启,无法评论!