函数返回对象的内容

时间:2016-02-11 08:28:42

标签: javascript

我写了以下代码:

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之间存在差异?返回对象的函数的正确/预期行为是什么?

提前谢谢。

4 个答案:

答案 0 :(得分:1)

以下是问题中代码的fiddle

以及我的Chrome浏览器控制台下面的图片

enter image description here

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}