ES6中用起来很爽的几点

1 剪头函数的this指针问题

this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,而是引用外层的this。这也避免了之前js代码中保存this指针的代码.


// ES6
function foo() {
setTimeout(() => {
console.log('id:', this.id);
}, 100);
}

// ES5
function foo() {
var _this = this;

setTimeout(function () {
console.log('id:', _this.id);
}, 100);
}

 

2 方法的默认值,方法可以在形参的地方加上默认值了!


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

log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello

 

3 ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。特别对于json数据构建顺手了好多.


var foo = 'bar';
var baz = {foo};
baz // {foo: "bar"}

// 等同于
var baz = {foo: foo};

 

4 求两个数组的并集,交集,差集 现在可以灵活的运用set数据类型来实现

let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);

// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}

// 交集
let intersect = new Set([...a].filter(x => b.has(x)));
// set {2, 3}

// 差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha Code