一、ES6 module:

1. 它是输出成一个对象的引用,而不是值的复制;

2. import是异步加载;

3. 模块是在静态代码编译的阶段,就编译成了一种输出的接口。而ES5的commonJS是在运行时加载执行的

 

ES6 module的引入:

如果是<script>标签形式引入,需要加type="model",标签内可以添加defer或async,两个的区别是:

defer:js模块下载完成后,会等到DOM渲染完成才去执行;

async:js模块下载完成后会立马执行,如果此时有DOM在渲染,那么DOM的渲染会暂时中止,等到JS执行完成后,再继续接着执行刚刚被中止的DOM渲染进程。

 

二、任意两个整数相加:

function solve( s ,  t ) {
    // write code here
    let tenthNum = 0
    let lengthDiff = t.length > s.length ? t.length - s.length : s.length - t.length
    let strFill0 = new Array(lengthDiff).fill('0').join('')
    let arr1 = lengthDiff >= 0 ? t : s
    let arr2 = lengthDiff >= 0 ? strFill0 + s : strFill0 + t
    let result = ''
    for (let i = arr1.length - 1; i >= 0; i--) {
        let sum = parseInt(arr1[i]) + parseInt(arr2[i]) + tenthNum
        if (i === 0) {
            result = sum + result
        } else {
            let unitNum = sum >= 10 ? sum % 10 : sum
            result = unitNum + result
            tenthNum = Math.floor(sum / 10)
        }
    }
    return result
}

 

 

三、async/await、promise和setTimeout写出以下代码的打印顺序:

async function async1() {
    console.log('async1 start');
    await async2();
    console.log('asnyc1 end');
}
async function async2() {
    console.log('async2');
}
console.log('script start');
setTimeout(() => {
    console.log('setTimeOut');
}, 0);
async1();
new Promise(function (reslove) {
    console.log('promise1');
    reslove();
}).then(function () {
    console.log('promise2');
})
console.log('script end');

结果:

  1. script start
  2.  async1 start
  3.  async2
  4.  promise1
  5.  script end
  6.  asnyc1 end
  7.  promise2
  8.  setTimeOut

分析:

1、执行console.log('script start'),输出script start
2、执行setTimeout,是一个异步动作,放入宏任务异步队列中;
3、执行async1(),输出async1 start,继续向下执行;
4、执行async2(),输出async2,并返回了一个promise对象,await让出了线程,把返回的promise加入了微任务异步队列,所以async1()下面的代码也要等待上面完成后继续执行;
5、执行 new Promise,输出promise1,然后将resolve放入微任务异步队列;
6、执行console.log('script end'),输出script end
7、到此同步的代码就都执行完成了,然后去微任务异步队列里去获取任务
8、接下来执行resolve(async2返回的promise返回的),输出了async1 end
9、然后执行resolve(new Promise的),输出了promise2
10、最后执行setTimeout,输出了settimeout

posted on 2020-12-17 17:41  去吃饭了  阅读(230)  评论(0编辑  收藏  举报