参考: ECMAScript6 入门
// a.js
var sex="boy";
var echo=function(value){
console.log(value)
}
export {sex,echo}
// b.js
import {sex,echo} from "./a.js"
console.log(sex) // boy
echo(sex) // boy
//a.js
var sex="boy";
export default sex(sex不能加大括号)
// b.js
import any from "./a.js"
import any12 from "./a.js"
console.log(any,any12) // boy,boy
{
let a = 1;
var b = 1;
}
a; // Uncaught ReferenceError: a is not defined(…)
b; // 1
function test(){
console.log(a);
console.log(b);
var a = 1;
let b = 1;
}
test(); // a:undefined;b:Uncaught ReferenceError: b is not defined(…)
([param] [, param]) => {
statements
}
param => expression
param 是参数,根据参数个数不同,分这几种情况:
// ES5
var selected = allJobs.filter(function (job) {
return job.isSelected();
});
// ES6
var selected = allJobs.filter(job => job.isSelected());
// ES5
var total = values.reduce(function (a, b) {
return a + b;
}, 0);
// ES6
var total = values.reduce((a, b) => a + b, 0);
除了正常运行模式,ES5添加了第二种运行模式:”严格模式”(strict mode)
“use strict”;
针对单个脚本
< script>
“use strict”;
console.log(“这是严格模式。”);
针对单个函数
function strict(){
“use strict”;
return “这是严格模式。”;
}
function notStrict() {
return “这是正常模式。”;
}
ES6引入了Class(类)这个概念,可以只看做一个语法糖。
实例1:
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
toString() {
return '(' + this.x + ', ' + this.y + ')';
}
}
super关键字用于访问父对象上的函数
实例1:
class Person {
constructor (name) {
this.name = name;
}
}
class Student extends Person {
constructor (name, age) {
super(); // 用在构造函数中,必须在使用this之前调用
this.age = age;
}
}
实例2:调用父类的静态函数
class Human {
constructor() {}
static ping() {
return 'ping';
}
}
class Computer extends Human {
constructor() {}
static pingpong() {
return super.ping() + ' pong';
} // 只有在子类的静态函数中才能调用父类的静态函数(babel环境测试,按理说,在实例函数中应该也可以调用,不过实际测试环境中报错)
}
Computer.pingpong(); // 'ping pong'
扩展运算符用三个点号表示,功能是把数组或类数组对象展开成一系列用逗号隔开的值。
var foo = function(a, b, c) {
console.log(a);
console.log(b);
console.log(c);
}
var arr = [1, 2, 3];
//传统写法
foo(arr[0], arr[1], arr[2]);
//使用扩展运算符
foo(...arr);
//1
//2
//3