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

Infinite loop in browser's console

有人可以解释为什么这个结果是无限循环吗??

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

soloLoop();

当您在全局范围内声明变量时,正如您在此处所做的那样,它们实际上作为属性包含在全局对象中,在本例中为 windowwindow.name is something that already exists,且只能设置为字符串。

当你这样做时:

var name = true;

实际上是将 window.name 设置为 "true"。与 name = false 相同 - 将其设置为 "false"。由于 "false" 是 "truthy",因此 while 循环永远不会退出。