首页IT科技js异步解决方案(JS面试之console的异步性怎么理解详解)

js异步解决方案(JS面试之console的异步性怎么理解详解)

时间2025-06-15 23:40:49分类IT科技浏览3461
导读:面试题目(字节 : console的异步性怎么理解?...

面试题目(字节):

console的异步性怎么理解?

答案解析:

console我一直以为是同步执行的             ,直到在一本书上看到                  ,才了解到console本身有异步的特性            。虽然在平常开发中经常使用console      ,但是真的没有意识到它的异步性                   。

下面就看下异步的实例

基础类型

该类型是我们开发中经常使用的       ,正是这种打印结果                  ,让我们认为console是同步的      。其实这种case也是异步的            ,因为执行到console时       ,拍摄了快照                   ,记录了当时的变量值            ,当代码执行完返回到事件队列时,直接打印了前面记录的快照造成的            。

let foo = bar; console.log(foo); foo = test;

引用类型

引用类型                   ,可以帮我们很好的验证console的异步性                   。看下图中的打印结果                  ,如果是同步的话,打印结果应该时{}             ,但是却是修改后的值{foo: bar}      。

主要是因为                  ,obj是引用类型      ,执行到console时             ,只是存储了对象的引用                  ,对于对象内部的值未做记录      。当代码执行完后      ,obj内部的值已经被修改                   。返回事件队列后       ,打印出的结果实际是修改后的值             。

let obj = {}; console.log(obj); obj.foo = bar;

结论

以上示例                  ,都是在浏览器中的表现            ,也就是浏览器中console实际是异步快照       ,node中的console是另一回事                   ,它是严格同步的            ,因此同样的代码打印结果是{}      。

浏览器之所以这样,是因为                   ,在许多程序中                  ,I/O被认为是低速的阻塞环节                  。在浏览器中,console.log会被异步处理以提高性能             。

下面再看两道题目加深下理解

第一道

a = [1, 2, 3]; console.log(a, a.pop());

[1, 2], 3

第二道

这道题目很有特点             ,打印结果                  ,展开前后值是不一样的。

person = { name: "张三", age: 18, }; console.log(person); person.name = "李四"; console.log(person);

当console.log输出内容为对象      ,指向的是对象的地址             ,当点开对象进行查看时                  ,才会去访问相应地址获取内容                  。所以点开对象后      ,会重新访问对象地址进行查询       ,因此之前的张三                  ,变成了李四

以上就是JS面试之console的异步性怎么理解详解的详细内容            ,更多关于JS面试console异步性的资料请关注本站其它相关文章!

声明:本站所有文章       ,如无特殊说明或标注                   ,均为本站原创发布                   。任何个人或组织            ,在未征得本站同意时,禁止复制            、盗用                   、采集      、发布本站内容到任何网站            、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益                   ,可联系我们进行处理            。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
java基础知识详解(Java学习,必备基础知识!) DEV版本增加物品方块(Win10 Dev 预览版 20279(FE_RELEASE)更新详解)