传递默认值时如何修复 '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;
};
我正在尝试在 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;
};