当前位置: 首页 > 知识库问答 >
问题:

Javascript console.log浏览器控制台上的怪异行为[重复]

姬振濂
2023-03-14

如果我在chrome或firefox上直接将下面的代码运行到控制台中,在第一个日志中,value2的值在内联表示中是0,但是如果我展开表示检查整个对象,它显示为17。这是一个多浏览器的bug还是我在这里遗漏了javascript的一些东西?我在这里提出这个问题的原因是,这种行为发生在不同的浏览器上,这使我认为语言或函数中存在某种我没有意识到的漏洞。

实际代码:

action = new Object();
action.value1 = 17;
action.value2 = 0;

console.log(action);
action.value2 = action.value1;
console.log(action);

在MacOS Catalina和两种浏览器的最新版本上进行了测试。

编辑--------------

问题是第一个console.log打印的value2为0,但当我展开对象细节时,它显示为17。我附上一张印刷品来澄清这个问题。

控制台结果的打印

即使在展开视图的情况下,第一个输出的value2的结果也是0。

共有1个答案

王豪
2023-03-14

console.log在chrome、firefox、nodejs和其他javascript引擎之间具有不同的内部工作方式。

在你的屏幕截图中,浏览器做了两件事:

  1. 打印操作对象
  2. 的简短预览
  3. 打印操作对象
  4. 的可展开引用

短预览是调用console.log时对象的可读版本快照

可消耗引用仅在调用console.log时打印展开图标。当展开时,chrome将获取该可消耗引用所引用的对象的当前值并打印它。当调用console.log时,它不打印值

由于调用console.log时的值({value1:17,value2:0})和当前值({value1:17,value2:17})不同,因此打印的内容不同。

 类似资料:
  • 我在SpringBoot api上工作,并使用具有以下属性设置的H2数据库。 当我想使用浏览器通过'http://localhost:8082/h2-console'查看H2数据库控制台时,浏览器中打开了一个带有连接和测试连接按钮的屏幕。当我单击Test Connection时,它返回成功,但当单击Connect按钮时,出现错误,即localhost拒绝连接。

  • 是否可以从Linux终端访问开发者工具(Chrome/Firefox)控制台以进行脚本编写? 我试图从我的浏览器访问AngularJS应用程序的变量,这样我就可以快速浏览文件。例如,我可以要求,及其相关的,等;一旦我找到结果,我会在编辑器中打开该文件。 我正在探索的其他选择是使用某种无头浏览器。另外还有一个开发工具协议,它被木偶师等工具用来编程访问Chrome开发工具。 一个简单的节点REPL就足

  • 如何禁止console为网站的所有浏览器运行任何脚本?

  • 问题内容: 为了进行快速验证,我在开发过程中已在浏览器控制台中测试了AngularJS服务。我注入到服务控制台的方法是在为说明这个问题,或 这与AngularJS 1.0.7完美配合。但是,升级到1.1.5之后,对于使用service的服务将不再起作用,不会发送xhr。 我已经测试过直接注射,它也不起作用。AngularJS changelog似乎没有关于此问题的记录。我可以知道这是什么问题吗?

  • 问题内容: 是否可以从控制台(Chrome开发者工具控制台)调用AngularJS控制器功能? 例如 问题答案: 是的,您只需要使用即可获取位于控制器范围内的元素:

  • 在我的浏览器控制台中获取警告: