while(true)在javascript中-它是如何工作的

时间:2018-10-25 15:39:14

标签: javascript

我已经为二进制搜索树编写了此代码。在大多数情况下,我了解插入节点时它是如何工作的。我不太了解的是while(true)部分。

在使用while循环时,我习惯于比较某种值。

对于此代码,它如何工作?

是因为正在设置电流,而while循环返回并检查是否与传递的值匹配? while循环如何与true一起工作?

class Node {
  constructor(val) {
    this.val = val;
    this.left = null;
    this.right = null;
  }
}

class BinarySearchTree {
  constructor() {
    this.root = null;
  }
}

BinarySearchTree.prototype.insert = function(value) {
  const newNode = new Node(value);

  if (this.root === null) {
    this.root = newNode;
  }

  let current = this.root;

  while(true) {
    if (value === current.val) return;

    if (value < current.val) {
      if (current.left === null) {
        current.left = newNode;
      }

      current = current.left;
    } else {
      if (current.right === null) {
        current.right = newNode;
      }

      current = current.right;
    }
  }
}


let tree = new BinarySearchTree();
tree.insert(10)
tree.insert(5)
tree.insert(13)
tree.insert(11)
tree.insert(2)
tree.insert(16)
tree.insert(7)

console.log(tree);

2 个答案:

答案 0 :(得分:2)

如果有节点,insert函数将迭代,直到找到放置新节点的位置-current.right或current.left。之后,它将当前节点设置为left或right。这意味着在下一次迭代中,它将检查current.value === value,如果为true,则将退出while(true)无限循环,这是通过“返回”完成的,您也可以使用“ break”。

阅读本(Does return stop a loop?),以了解“返回”的方式。作品。

编辑:为清除此问题,“返回”和“中断”具有不同的功能,但对于您而言,它们具有相同的作用。

答案 1 :(得分:1)

  

对于此代码,它如何工作?除了插入相同编号时返回的代码外,代码中没有任何其他内容。它是如何突破循环的?

它返回。

返回将退出当前功能。

这将覆盖函数内部的循环。