繁体   English   中英

使用嵌套函数时无法读取未定义的属性“推送”

[英]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错误的Cannot read property 'push' of undefined

在第二个脚本中,您编写了traverse(node.right) ,但是,因为您的traverse函数现在有两个参数,而您只传入一个参数,所以arr未定义。 然后,在递归函数调用中,您会收到关于arr.push(node.val)语句的警告,因为您试图在arr上调用push方法,即使该变量未定义。 要修复错误,请添加arr作为函数调用的第二个参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM