经典面试题2

接经典面试1的说法,在笔试的时候遇到这样的一个题目:

function printing() {

          console.log(1);

          setTimeout(function() { console.log(2); }, 1000);

          setTimeout(function() { console.log(3); }, 0);

          console.log(4);

}

printing();

问最后的输出结果,并阐述原因.

        这里的答案是:1 4 3 2 ,为什么呢?

        在做这样的题目的时候需要理解setTimeout()的作用,这里是设置一个定时器,相比较这两段代码:setTimeout(function() { console.log(3); }, 0);和console.log(4);可以很清晰的看到第一段代码被设置了setTimeout(),在JS中只要代码中被设置了setTimeout(),相比较未被定义setTimeout的代码块,被设置的那段代码都会被排队,即:先执行未被设置setTimeout()的代码块,在执行被设置的代码块,到这里就很清晰了,JS中会先编译:console.log(1);和console.log(4),那么这段两段就会被先后打印出来,即为:1  /  4 ,再然后由于setTimeout()被设置了定时时间,也会有个先后执行顺序,设置的时间越长,被编译的排队时间就越长,这样就会先输出2 / 3,所以最终的结果就是:1 / 4 / 2 / 3.

本文纯属原创;

分类:经典面试题经历;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容