传递默认值时如何修复 'node is undefined' 错误?

How to fix 'node is undefined' error when a default value is being passed?

我正在尝试在 javascript 中实现 Trie 数据结构。在仅打印包含 trie 中所有单词的数组的 print 函数中,我有另一个函数 search,它搜索 trie 中的所有单词并将它们推送到数组。搜索函数的两个参数 'node' 和 'str' 都有默认值。当我在不传递任何参数的情况下调用该函数时,尽管该节点具有默认值并且不是未定义的,但仍会发生错误。

this.print = function(){
        let words = new Array();
        let search = function(node = this.root, string = new String()){
            if(node.keys.size != 0){
                if(node.isEnd() === true){
                    words.push(string);
                }
                for (let letter of node.keys.keys()){
                    search(node.keys.get(letter), string.concat(letter));
                };
            }else{
                (string.length > 0) ? words.push(string) : undefined;
                return;
            }
        };
        search();
        return words.length > 0 ? words : null;
    };

类型错误:节点未定义trie.js:44:16

search http://127.0.0.1:5500/trie.js:44
print http://127.0.0.1:5500/trie.js:56
<anonymous> http://127.0.0.1:5500/trie.js:

试试这个:

this.print = function(self=this){
    let words = new Array();
    let search = function(node = self.root, string = new String()){
        if(node.keys.size != 0){
            if(node.isEnd() === true){
                words.push(string);
            }
            for (let letter of node.keys.keys()){
                search(node.keys.get(letter), string.concat(letter));
            };
        }else{
            (string.length > 0) ? words.push(string) : undefined;
            return;
        }
    };
    search();
    return words.length > 0 ? words : null;
};