美文网首页
2021-03-04

2021-03-04

作者: 转移到CSDN名字丹丹的小跟班 | 来源:发表于2021-03-07 22:59 被阅读0次

    js

    判断执行顺序

    async function async1() {
      console.log("async1 start"); //2
      await async2();
      console.log("asnyc1 end"); //6
    }
     function async2() {
      console.log("async2"); //3
    }
    console.log("script start");  //1
    setTimeout(() => {
      console.log("setTimeOut"); //8
    }, 0);
    async1();
    new Promise(function (reslove) {
      console.log("promise1");  //4
      reslove();
    }).then(function () {
      console.log("promise2");  //7
    });
    console.log("script end"); //5
    

    手动编写new方法

    function AA(name, age) {
      this.name = name;
      this.age = age;
    }
    
    function myNew(Fn, ...arg) {
      let obj = Object.create(Fn.prototype);
      Fn.apply(obj, arg);
      return obj;
    }
    console.log(myNew(AA, "aa", 30));  //AA {name: "aa", age: 30}
    

    为什么输出函数

    var b = 10;
    (function b() {
      b = 20;
      console.log(b);
    })();
    

    首先进行变量提升b,然后执行自定义函数,里面的b = 20没有使用var,所以是全局window下的属性,打印时会从里向外找,会首先找到函数b

    相关文章

      网友评论

          本文标题:2021-03-04

          本文链接:https://www.haomeiwen.com/subject/puvkqltx.html