Javascript console.log何时执行?

Javascript console.log何时执行?,javascript,class,logging,console,Javascript,Class,Logging,Console,我试图使用console.log调试一些非常简单的Javascript,但它输出的变量值在console.log调用之后才更改,而变量是“类”成员(Chrome 22、Firefox 16) 我期望发生的一个例子如下: var a = 1; console.log(a); a += 20; //console output says a is 1 但如果变量是“类”成员: var a = new myClass(1); console.log(a); a.x += 20; //consol

我试图使用console.log调试一些非常简单的Javascript,但它输出的变量值在console.log调用之后才更改,而变量是“类”成员(Chrome 22、Firefox 16)

我期望发生的一个例子如下:

var a = 1;
console.log(a);
a += 20;

//console output says a is 1
但如果变量是“类”成员:

var a = new myClass(1);
console.log(a);
a.x += 20;

//console output says a.x is 21
如果控制台在调用日志时没有记录其存在的值,那么它最终何时决定记录该值,以及如何解决此问题

fwiw以下是整个代码:

function myClass() {
    myClass.myClass.apply(this, arguments);
    if (this.constructor === myClass) this.myClass.apply(this, arguments);
};
myClass.myClass = function () {};
myClass.prototype.myClass = function (x_) {
    if (x_ === undefined) x_ = 0;
    this.x = x_;
}

var a = new myClass(1);
console.log(a);
a.x += 20;
立即,但在控制台中手动展开对象时会获取对象的状态,而不是在日志记录时


当您在控制台中展开它时,添加20的代码已经执行很久了(相对而言),它说
x:21

,这对于Chrome来说几乎是有意义的,因为我必须手动展开它。对于FF,它已经扩展了,具有相同的结果。。。我现在看到一堆相关的问题,出于某种原因,在我输入问题时,这些问题没有显示为建议-似乎答案是将对象字符串化。我真的认为“log”这个名字对于这个函数来说是个糟糕的选择,因为日志通常是过去事件和状态的记录。至少我不会浪费一个小时去弄清楚到底发生了什么。尽管如此,问题还是解决了,谢谢!在Chome控制台中,默认情况下不会完全显示大型对象。有一个小三角形图标,您可以单击它展开日志条目并查看完整的详细信息。@iforce2d当前FF行为与2019年3月的Chrome类似