这似乎是一个难以回答的问题。给定一个函数,例如显示的函数,如何获取输入变量的名称以进行调试。即)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。
答案 0 :(得分:1)
基本上,我想在sum函数中调用console.log()变量的名称而不是root。
你不能。调用sum
函数时,会传递一个值。该值是指向对象的指针,并且根本没有与指针来自的变量的连接。如果你这样做了:
let tree = new TreeNode(1);
let x = y = tree;
sum(x);
sum(y);
对sum()
的两次调用完全没有区别。每个都传递了完全相同的值(指向TreeNode
对象的指针),x
或y
或tree
中没有任何引用{{1功能。
如果出于调试原因和/或日志记录需要额外信息(如变量名称),则可能必须将该额外名称传递给函数,以便记录它。
答案 1 :(得分:0)
您可以更改c.body.encode('utf-8')
函数以进行调试:
sum