1.箭头函数的this向上查找作用域,最后指向foo的this,而调用foo函数的是window对象。
如果setTimeout里面的回调是普通函数,则输出id:21 ,因为普通函数是谁调用的,this就指向谁。
2.Timer里的this指向timer,因为是new出来的
3.
4.对象不构成单独的作用域
5.
6. 解构赋值可以读取对象的原型上的属性; 扩展运算符的解构赋值,只能读取对象自身的属性
7.
8.
9.
10.
11.
12
13
14.
15
16
17.
19
20
21
22
23
24.
function* genFuncWithReturn() {
yield 'a';
yield 'b';
return 'The result';
}
var it = genFuncWithReturn();
console.log(it.next()); //{value: 'a', done: false}
console.log(it.next()); //{value: 'b', done: false}
console.log(it.next()); //{value: 'The result', done: true}
console.log([...genFuncWithReturn()]); // ['a', 'b']
26.
27.
28.
29.
- async函数的await命令后面,可以是 Promise 对象和原始类型的值(数值、字符串和布尔值,但这时会自动转成立即 resolved 的 Promise 对象)。
- async函数的返回值是 Promise 对象,这比 Generator 函数的返回值是 Iterator 对象方便多了。你可以用then方法指定下一步的操作
- async函数返回的 Promise 对象,必须等到内部所有await命令后面的 Promise 对象执行完,才会发生状态改变,除非遇到return语句或者抛出错误。也就是说,只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数。
31.
32
33.
34.
35
36
37
38
39.
40
41
42
43
44
45
46