为什么在 console.log 已经输出后修改 chrome 开发者工具输出?
Why modify chrome developer tools output from console.log after already outputting it?
以下内容应该能让您理解:
我设置值为1,然后在控制台输出。这里输出显示 1。在我将值设置为 2 之后。相同的控制台输出显示 2.
我怎样才能避免这种情况?我尝试调试一些疯狂的狗屎,并且在输出对象时必须知道对象的值。不是对象的最新值。
控制台输出你最后一个表达式的结果。
比如你写1,回车,就会输出1。
第一个表达式(赋值)的结果是 "test" 变量的值。
你的第二个表达式(也是赋值)的结果是 "test.value" 的值,即 2。
如果您想查看变量的值,只需输入 "test" 并按回车键。
当您在控制台记录它时,它是对变量的引用,因此无论您何时打印它,它都链接到您现在更改的相同值。
你可以把它打印成一个字符串,例如,看看当时它是什么:
console.log("value: " + x);
这应该将 x 的值连接成一个字符串,这样它就不会改变
(在手机上来自 devRant,所以无法测试)
console.log("value", x) ;
将引用存储 x 的内存,因此它将始终使用变量更新
以下内容应该能让您理解:
我设置值为1,然后在控制台输出。这里输出显示 1。在我将值设置为 2 之后。相同的控制台输出显示 2.
我怎样才能避免这种情况?我尝试调试一些疯狂的狗屎,并且在输出对象时必须知道对象的值。不是对象的最新值。
控制台输出你最后一个表达式的结果。
比如你写1,回车,就会输出1。
第一个表达式(赋值)的结果是 "test" 变量的值。
你的第二个表达式(也是赋值)的结果是 "test.value" 的值,即 2。
如果您想查看变量的值,只需输入 "test" 并按回车键。
当您在控制台记录它时,它是对变量的引用,因此无论您何时打印它,它都链接到您现在更改的相同值。
你可以把它打印成一个字符串,例如,看看当时它是什么:
console.log("value: " + x);
这应该将 x 的值连接成一个字符串,这样它就不会改变 (在手机上来自 devRant,所以无法测试)
console.log("value", x) ;
将引用存储 x 的内存,因此它将始终使用变量更新