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

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

时间2025-08-02 16:44:43分类IT科技浏览4087
导读:面试题目(字节 : 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
typescript function(TypeScript(6)函数) 如何看到共享文件夹(查看所有共享文件夹)