gpt4 book ai didi

javascript - 函数内无法访问变量

转载 作者:行者123 更新时间:2023-12-03 02:42:43 25 4
gpt4 key购买 nike

我有一些变量未包含在函数中,而是位于创建它们的位置之外。我知道我可以将它们作为参数传递,但是我正在寻找一种更优雅的方法。

代码:

Tree.prototype.add = function(path){
var pathSplit = path.split('/');
//gets the length of the path
const pathLength = pathSplit.length;
//this compares the path to the nodes/directories
let compare = (currentNode, n) => {
console.log(n);
if(n == pathLength -1){
console.log(pathLength);
//create a new node with file name as data
var nodeFile = new Node(pathSplit[n]);
//adds the file name onto the the node
currentNode.children.push(nodeFile);
//sets the node parent to the currentNode
nodeFile.parent = currentNode;
}else{
//console.log('THIS IS RUN');
var newNode = () => this.traversalBF(currentNode, pathSplit[n]);
//console.log(newNode);
compare(newNode, n++);
};

};
compare(this._root, 0);
};

变量PathLength在比较函数中被认为是0。但调用时它应该是 3:

tree.add('one/two/three');

最佳答案

问题是在递归调用中传递了n++ 的值。请注意,这会在增加之前传递 n 的值。所以你会得到一个无限递归链,其中路径长度永远不会达到。

而是这样做:

        compare(newNode, n+1);

注意:pathLength 的值永远不会为 0。您将 npathLength 记录在代码中的不同位置,因此您可能会将其中一个混淆为另一个。 n 就是 0。

关于javascript - 函数内无法访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48253220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com