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
网友评论