每日3题7下面代码执行后,控制台输出什么?constobj={flag:false,};functionA(){this.flag=true;returnobj;}consta=newA();console.log(a.flag);8下面代码执行后,控制台输出?console.log(1);setTimeout(()=>{console.log(2);},0);console.log(3);Promise.resolve(4).then((b)=>{console.log(b);});console.log(5);9下面代码执行后,控制台输出什么?vara=10;functiona(){}console.log(typeofa);答与分析7答:false调查new操作符如果构造函数显式返回一个对象,那么这个对象会覆盖new创建的对象变量a指向obj,所以a.flag就是obj.flag8答:13542检查事件循环、微任务和宏任务浏览器中的事件循环如下图所示。整体代码是按顺序排列的第一个宏任务。执行同步任务,所以输出:135,并将microtasks和macrotasks入队,其中microtask是then方法,macrotask是setTimeout判断是否有microtasks,然后执行,所以输出4浏览器渲染后,进入In下一个循环,宏任务队列中有setTimeout,执行输出为29。答:数字检查变量提升和函数声明提升。var声明的变量和函数会被提升,函数的优先级高于变量。原始代码相当于:functiona(){}vara;a=10;console.log(typeofa);并且变量不会被重复声明,所以将a=10赋给了原本指向函数的变量a,最后a的类型变成了number
