我写了以下代码:
function return_list_node(v,r)
{
return {value: v, pointer: r};
}
console.log(return_list_node(10,return_list_node(20,null)));
我希望它返回{value: 10, pointer: {value: 20, pointer: null}}
。相反,该函数返回Object {value: 10, pointer: Object}
。
我知道这不是一个console.log问题,因为我在调试器中看到了代码的执行 - 并且返回值确实是一个对象类型。
我尝试过其他方法,如:
function return_list_node(v,r)
{
var ret=
{
value: v,
pointer: r
};
return ret;
}
console.log(return_list_node(10,return_list_node(20,null)));
但问题仍然存在。例如,第一次调用return_list_node()将返回Object {value: 20, pointer: null}
。
如果有帮助,我的主要信息来源是Eloquent Javascript。在本书中,作者给出了a certain example:
function randomPointOnCircle(radius) {
var angle = Math.random() * 2 * Math.PI;
return {x: radius * Math.cos(angle),
y: radius * Math.sin(angle)};
}
console.log(randomPointOnCircle(2));
// → {x: 0.3667, y: 1.966}
事实上,在他的网站上执行它会给{x: -0.2914551368496415, y: -1.9786495149985397}
。如果我在本地运行上述代码,我会收到Object {x: 1.9649681395718306, y: 0.37269318543222546}
。
我已在this excersise(在网站的沙盒环境中)验证了我的代码(在prepend()
中使用)确实返回了我期望它返回的内容({value: 10, rest: {value: 20, rest: null}}
),并且不是对象。
为什么沙盒环境与我的Google Chrome 48之间存在差异?返回对象的函数的正确/预期行为是什么?
提前谢谢。
答案 0 :(得分:1)
以下是问题中代码的fiddle。
以及我的Chrome浏览器控制台下面的图片
idont明白,什么不行,现在当我从命令行尝试从nodejs打印时,
{ value: 10, pointer: { value: 20, pointer: null } }
一切都按预期工作
答案 1 :(得分:0)
Console.log有时不显示嵌套对象。要获得完整输出,请致电
console.log(JSON.stringify(object))
答案 2 :(得分:0)
只做你期望的那样。这只是谷歌Chrome控制台显示它的方式。 试试这个:
x=return_list_node(10,return_list_node(20,null))
答案 3 :(得分:0)
你的职能:
function return_list_node(v,r)
{
return {value: v, pointer: r};
}
第一个电话:
return_list_node(20,null) //returns Object {value: 20, pointer: null}
第二次电话(现在您正在通过{value: 20, pointer: null}
)作为第二个参数,显然会返回:
return_list_node(20,{value: 20, pointer: null}) //returns {value: 10, pointer: Object}