如果之前有人问过,请提前致意,但我无法通过搜索找到它。
在开发者模式下观察到的输出 Firefox 50.1.0 Chrome 55.0.2883.87
**也许这就是我做错了,但不要只是在开发者模式下查看console.log,而是单击该特定console.log调用的对象的详细信息
我从学习高级JavaScript中看到了这段代码,并添加了一些console.log调用以更好地理解它。但是,我的console.log调用的输出对我来说没有意义。
我希望console.log(“p00,...)调用的输出相同,但输出会有所不同,具体取决于是否注释了第一个”返回根目录“。
当没有注释第一个“返回根”时,console.log(“p00,...)显示一个具有单个属性的对象 - 它是”name“。这是我所期望的并且有意义我
当第一个“返回根”被注释时,console.log(“p00,...)显示一个具有两个属性的对象 - 它们是”name“和”city“。 为什么会发生这种情况?
以下是Javascript代码:
function merge(root){
console.log("p00, root is ", root);
console.log("p01, arg length is ", arguments.length);
console.log("p02, arg is ", arguments);
// comment out this return call and see the difference
return root;
for ( var i = 1; i < arguments.length; i++ ) {
for ( var key in arguments[i] ) {
root[key] = arguments[i][key];
}
}
return root;
}
var v1 = {name: "John"};
var v2 = {city: "Boston"};
var merged = merge(v1, v2);
console.log("p03, merged is ", merged);
在Firefox中观察输出:
首先返回root取消注释 first return root uncommented
首先返回root评论 first return root commented
答案 0 :(得分:0)
控制台为您要注销的对象提供引用。这意味着在函数运行完毕后,您将看到对象的状态。
如果要查看对象状态的快照,可以尝试将其转换为JSON。
// Be sure to open your real console for this
function reference(obj) {
console.log(obj);
obj.b = 2;
}
function json(obj) {
console.log(JSON.stringify(obj));
obj.b = 2;
}
reference({ a: 1 });
json({ a: 1 });
&#13;