浏览器控制台中的无限循环

Din*_*inu 1 javascript infinite-loop

谁能解释为什么这个结果是无限循环?

var name = true;
var soloLoop = function () {
  while (name) {
     console.log(name);
     name = false;
  }
};

soloLoop();
Run Code Online (Sandbox Code Playgroud)
  • 注1:只能在浏览器的控制台中复制.
  • 注2:只能用变量"name"重现.

Jam*_*rpe 6

当您在全局范围内声明变量时,正如您在此处所做的那样,它们实际上包含在全局对象的属性中,在本例中window. window.name是已存在的东西,只能设置为字符串.

当你这样做时:

var name = true;
Run Code Online (Sandbox Code Playgroud)

它实际上是设置window.name为"true".相同name = false- 它将其设置为"false".由于"false"是"真理",while循环永远不会退出.

  • 它也将在控制台外重现,只要它在全球范围内.像jsfiddle等不会在全球范围内. (2认同)