使用嵌套函数时无法读取未定义的 属性 'push'
Cannot read property 'push' of undefined when when using nested functions
为什么下面的代码有效
const inorderTraversal = (root) => {
let out = []
const traverse = (node) => {
console.log(node)
if (!node) return
traverse(node.left)
out.push(node.val)
traverse(node.right)
}
traverse(root)
return out
};
但是这个没有
const inorderTraversal = (root) => {
let out = []
const traverse = (node,arr) => {
if (!node) return
traverse(node.left)
arr.push(node.val)
traverse(node.right)
}
traverse(root,out)
return out
};
我需要修改多个二叉树的算法,但是当将数组作为参数而不是全局变量发送时,我收到 Cannot read property 'push' of undefined
错误。
在你的第二个脚本中,你写了 traverse(node.right)
,但是,因为你的 traverse
函数现在有两个参数而你只传入一个,所以 arr
是未定义的。然后,在递归函数调用中,您会在语句 arr.push(node.val)
上收到警告,因为您试图在 arr
上调用 push
方法,即使变量未定义也是如此。要修复错误,请添加 arr
作为函数调用的第二个参数。
为什么下面的代码有效
const inorderTraversal = (root) => {
let out = []
const traverse = (node) => {
console.log(node)
if (!node) return
traverse(node.left)
out.push(node.val)
traverse(node.right)
}
traverse(root)
return out
};
但是这个没有
const inorderTraversal = (root) => {
let out = []
const traverse = (node,arr) => {
if (!node) return
traverse(node.left)
arr.push(node.val)
traverse(node.right)
}
traverse(root,out)
return out
};
我需要修改多个二叉树的算法,但是当将数组作为参数而不是全局变量发送时,我收到 Cannot read property 'push' of undefined
错误。
在你的第二个脚本中,你写了 traverse(node.right)
,但是,因为你的 traverse
函数现在有两个参数而你只传入一个,所以 arr
是未定义的。然后,在递归函数调用中,您会在语句 arr.push(node.val)
上收到警告,因为您试图在 arr
上调用 push
方法,即使变量未定义也是如此。要修复错误,请添加 arr
作为函数调用的第二个参数。