[英]javascript executed in the wrong order
在Chrome控制台中,似乎第二行在第一行之前执行。 为什么?
function fn(obj){
console.log(obj);
obj.a = 1;
}
fn({b:1}); // prints {a:1, b:1} in console! WHAT!!!
fn({}); // prints {}. OMG. WHAT. This is inconsistent with above behaviour!
这不会发生在Edge控制台中。
您正在将对象记录到控制台。 无论您记录什么,都是对实际对象的引用。 由于您更新了对象,因此引用将反映最新值。
要进行测试,您可以在设置它的值之前尝试记录obj.a.
它似乎是Chrome devtools控制台的一个bug功能。 例如,如果您运行此代码段,您将获得
{
"b": 1
}
但是,如果您同时打开Chrome控制台,您将获得以下内容:
{b: 1}
a:1
b:1
正如您所看到的,第一行反映了记录时的obj
状态,但是当您单击它时,它的内容似乎会更新。
在记录对象右侧还有一个蓝色信息工具提示,上面写着:“下面的值刚刚评估过了”,确认这是一个功能,而不是一个bug。
function fn(obj){ console.log(obj); obj.a = 1; } fn({b:1});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.