this指向

1.

function foo() {    console.log( this.a );}function doFoo() {    foo();}var obj = {    a: 1,    doFoo: doFoo};var a = 2; obj.doFoo()   // 2

2.

var inner = 'window'function say() {    console.log(inner)    console.log(this.inner)}let obj = (function f() {    var inner = 'inner-1'    return {        inner: 'inner-2',        say:  function(){            console.log(inner);            console.log(this.inner);        }    }})()say()  // window, windowobj.say()      // inner-1 inner-2obj.say = sayobj.say()    // window inner-2

事件循环

1.

setTimeout(() => {  console.log('1');  Promise.resolve().then(() => {    console.log('2');  });}, 0);new Promise((resolve) => {  console.log('3');  resolve();}).then(() => {  console.log('4');  setTimeout(() => {    console.log('5');  }, 0);}).then(() => {  console.log('6');});console.log('7');// 3 7 4 6 1 2 5

2.

     async function async1() {        console.log('async1 start');        await async2();        console.log('async1 end');      }      async function async2() {        console.log('async2');      }      console.log('script start');      setTimeout(function() {        console.log('setTimeout');      }, 0);      async1();      new Promise(function(resolve) {        console.log('promise1');        resolve();      }).then(function() {        console.log('promise2');      });      console.log('script end');      // script start, async1 start, async2, promise1, script end,  async1 end, promise2, setTimeout