获取函数中输入变量的名称

时间:2018-04-28 23:50:49

标签: javascript node.js debugging ecmascript-6 binary-tree

这似乎是一个难以回答的问题。给定一个函数,例如显示的函数,如何获取输入变量的名称以进行调试。即)root - > root.left - > root.right - > root.left.right - >等等... 或者即树 - > tree.left - > tree.right - > tree.left.right - >等...

function TreeNode(val) {
    this.val = val;
    this.left = this.right = null;
}
var sum = function(root) {
    console.log(root);
    if(root === null) return 0;
    return root.val + sum(root.left) + sum(root.right);
}

let tree = new TreeNode(1);
tree.left = new TreeNode(2);
tree.right = new TreeNode(3);
tree.left.right = new TreeNode(4);
let x = sum(tree);
console.log(x);

基本上,我想在sum函数中调用console.log()变量的名称而不是root。

2 个答案:

答案 0 :(得分:1)

  

基本上,我想在sum函数中调用console.log()变量的名称而不是root。

你不能。调用sum函数时,会传递一个值。该值是指向对象的指针,并且根本没有与指针来自的变量的连接。如果你这样做了:

let tree = new TreeNode(1);
let x = y = tree;
sum(x);
sum(y);

sum()的两次调用完全没有区别。每个都传递了完全相同的值(指向TreeNode对象的指针),xytree中没有任何引用{{1功能。

如果出于调试原因和/或日志记录需要额外信息(如变量名称),则可能必须将该额外名称传递给函数,以便记录它。

答案 1 :(得分:0)

您可以更改c.body.encode('utf-8') 函数以进行调试:

sum