본문 바로가기
Error

재귀 for문에서 return을 만났는데도 함수를 안빠져 나온다?

by jennyiscoding 2023. 8. 28.
addSiblingButton.addEventListener('click', () => {
  if (selectedId == null) {
    return;
  }

  const parentElem = findSelectedElementParents();
  console.log(parentElem, "parent 여기 와야하는데요?")

  parentElem.children.push({
    id: `${parentElem.id}-${parentElem.children.length +1}`,
    text: `${parentElem.id}-${parentElem.children.length +1}`,
    children: [],
  });

  render();
})
const findSelectedElementParents = (elem = root) => {
  for (let i = 0; i < elem.children.length; ++i) {
    const child = elem.children[i];
    if(!child) {
      return "no";
    }
    if(child.id === selectedId) {
      console.log(child.id, selectedId, elem, "먼데..")
      return elem;
    } 
    console.log('먼데 후에 오면 안됨..')
    findSelectedElementParents(child);
  };
}

뭘까 진짜.. 

 

고친거 : 

const findSelectedElementParents = (parentNode = root) => {
  for (let i = 0; i < parentNode.children.length; ++i) {
    const currentNode = parentNode.children[i];
    if(!currentNode) {
      return "no";
    }
    
    if(currentNode.id === selectedId) {
      console.log(currentNode.id, selectedId, parentNode, "먼데..")
      return parentNode;
    } 
    // console.log('먼데 후에 오면 안됨..')
    const result = findSelectedElementParents(currentNode);
    if (result) {
      console.log('result', result);
      return result;
    }
  };
}