es6相关虐心题,求大神详解

相关虐心题,不能理解,求大神给予解释:

1.
(function(x, f = () => x) {
var x;
var y = x;
x = 2;
return [x, y, f()];
})(1)
2.
(function() {
return [
(() => this.x).bind({ x: 'inner' })(),
(() => this.x)()
]
}).call({ x: 'outer' });
3.
let x, { x: y = 1 } = { x }; y;
4.
(function() {
let f = this ? class g { } : class h { };
return [
typeof f,
typeof h
];
})();
5.
(typeof (new (class { class () {} })))
6.
typeof (new (class F extends (String, Array) { })).substring
7.
[...[...'...']].length
8.
typeof (function* f() { yield f })().next().next()
9.
typeof (new class f() { f { }, f: { } })[${f}]
10.
typeof ${{Object}}.prototype
11.
((...x, xs)=>x)(1,2,3)
12.
let arr = [ ];
for (let { x = 2, y } of [{ x: 1 }, 2, { y }]) {
arr.push(x, y);
}
arr;u
13.
(function() {
if (false) {
let f = { g() => 1 };
}
return typeof f;
})();

原问题在这:http://www.dreawer.com/question/6fc4ff80827b442e850df488b9bc47de

自己先好好了解es6语法,看这些代码就简单了

阮老师的:http://es6.ruanyifeng.com/