Javascript 为什么console.log()创建/**id:4**/和/**ref:4**/值?

Javascript 为什么console.log()创建/**id:4**/和/**ref:4**/值?,javascript,arrays,typescript,for-loop,console.log,Javascript,Arrays,Typescript,For Loop,Console.log,几分钟前我做了,下面是答案片段 让obj={staff_changes:[]}; 让newStaff=[]; for(设i=0;i为这些值创建一个新的引用。考虑一个无限递归的数据结构,如“代码> const As= [];a.push(a);控制台。log(a)< /代码>,您更喜欢哪一个:您的计算机在打印无限递归数组或控制台时锁定,日志< /代码>缩写它吗?

几分钟前我做了,下面是答案片段

让obj={staff_changes:[]};
让newStaff=[];
for(设i=0;i<4;i++){
push({id:'staff'+i});
obj.staff_changes.push({
id:我,
新闻塔夫
});
}

控制台日志(obj)您的数据结构包含对同一对象的多个引用
console.log
足够智能,可以简化输出

请注意(AFAIK),对于不是
String
实例的对象,该规范不保证从
console.log
输出任何特定的输出,因此您不能依赖该输出在浏览器、版本、月相等方面是相同的


考虑一个无限递归的数据结构,比如
const a=[];a、 推(a);console.log(a)
,您更喜欢哪一种:打印无限递归数组时锁定您的计算机,还是简化它

const a=[]
a、 推(a)
控制台日志(a)
// [
///**编号:1**/
///**参考号:1**/

//]
根据您的控制台工具,它们将以不同的方式显示这样的对象。这些注释告诉您,对象中有更多更深入的信息

如果希望以一致的方式查看内部,可以将整个对象字符串化

console.log(JSON.stringify(obj));
在这种情况下,您会得到:

“工作人员”的变化是:工作人员的各种变化::“{”工作人员的各种变化:“{”工作人员的各种变化:“{”工作人员的各种变化:“{”工作人员的各种变化:“{”工作人员的各种变化:“{”id:0,”纽约州,新闻斯塔夫:“{”id:0,新闻斯塔夫:1,纽约州,新闻斯塔夫:“{”id:0,纽约,新闻斯塔夫:0,纽约市,新闻斯塔夫:0,纽约市,新闻斯塔夫:““““““““““,,”0,”0,”0,”0,新闻斯塔夫:1,”纽约市,新闻斯塔夫::“““““““““““““:,”纽约纽约市,新闻斯塔夫::::::::“{{{”纽约市,”纽约纽约市,新闻斯塔夫:““““““““““““““““““,,,”纽约市,”纽约市,”纽约市,”纽约市,”纽约市,”{“id”:“staff0”},{“id”:“staff1”},{“id”:“staff2”}{“id”:“staff3”}]}]}


在某些开发人员工具中,您可以在将对象记录到控制台时展开该对象,但上面的字符串输出显示了所有工具的一致性。

因此,此问题与console.log()有关或者JavaScript?这不是问题@RameshRajendran只是
console.log
s behavior什么问题?没有问题。您创建了一个数据结构,其中包含对同一对象的多个引用,这是完全允许和合理的,并且
console.log
选择以某种方式打印它,这是完全允许和合理的。这就是为什么我要求<代码> Objist.Advices()>为这些值创建一个新的引用。考虑一个无限递归的数据结构,如“代码> const As= [];a.push(a);控制台。log(a)< /代码>,您更喜欢哪一个:您的计算机在打印无限递归数组或<代码>控制台时锁定,日志< /代码>缩写它吗?