let { foo, bar } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"
let { bar, foo } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"
let { baz } = { foo: "aaa", bar: "bbb" };
baz // undefined
解构的出现让很多操作变得容易起来。
交换变量的值
let x = 1;
let y = 2;
[x, y] = [y, x];
提取JSON数据
let jsonData = {
id: 42,
status: "OK",
data: [867, 5309]
};
let { id, status, data: number } = jsonData;
console.log(id, status, number);
// 42, "OK", [867, 5309]
函数参数的默认值
jQuery.ajax = function (url, {
async = true,
beforeSend = function () {},
cache = true,
complete = function () {},
crossDomain = false,
global = true,
// ... more config
} = {}) {
// ... do stuff
};
3.默认参数
ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。
function log(x, y) {
y = y || 'World';
console.log(x, y);
}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello World
这个方法在多数情况下是适用的,但是当传入的y是一个false值时,则会被认为没有传入参数。例如:
log('Hello', 0); // Hello World,传入的参数0失效
ES6允许为函数的参数设置默认值,即直接写在参数定义后面。
function log(x, y = 'World') {
console.log(x, y);
}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello
4.箭头函数
简单使用:
var f = v => v;
等同于
var f = function(v) {
return v;
}
如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。
var f = () => 5;
// 等同于
var f = function () { return 5 };
如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。
var sum = (num1, num2) => {
return num1 + num2;
}
由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错。
// 报错
let getTempItem = id => { id: id, name: "Temp" };
// 不报错
let getTempItem = id => ({ id: id, name: "Temp" });
箭头函数体内的this对象,就是定义时所在的对象,不再是使用时所在的对象。
function foo() {
setTimeout(() => {
console.log('id:', this.id);
}, 100);
}
var id = 21;
foo.call({ id: 42 });
// id: 42
5.模板表达式和多行字符串
在ES5中,如果想要拼接字符串和变量需要这样写:
var age = 18;
var str = 'I am ' + age + ' years lod';
ES6提供了新语法-在反引号包裹的字符串中,使用${NAME}引入变量。那拼接字符串可以这样写:
var str = `I am ${age} years old`;
同时,反引号包裹的字符串还支持换行。
var str = `I am ${age} years old,
and my name id Linda`;
// 等同于
var str = 'I am ' + age + ' years lod' +
'and my name id Linda';
// profile.js
// 输出变量
export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;
// 输出变量的另一种写法
var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;
export {firstName, lastName, year};
// 输出函数和类
export function multiply(x, y) {
return x * y;
};