浏览器控制台中的无限循环
Infinite loop in browser's console
有人可以解释为什么这个结果是无限循环吗??
var name = true;
var soloLoop = function () {
while (name) {
console.log(name);
name = false;
}
};
soloLoop();
- 注1:只能在浏览器的控制台中重现。
- 注释 2:仅可通过变量 "name".
重现
当您在全局范围内声明变量时,正如您在此处所做的那样,它们实际上作为属性包含在全局对象中,在本例中为 window
。 window.name
is something that already exists,且只能设置为字符串。
当你这样做时:
var name = true;
实际上是将 window.name
设置为 "true"
。与 name = false
相同 - 将其设置为 "false"
。由于 "false"
是 "truthy",因此 while
循环永远不会退出。
有人可以解释为什么这个结果是无限循环吗??
var name = true;
var soloLoop = function () {
while (name) {
console.log(name);
name = false;
}
};
soloLoop();
- 注1:只能在浏览器的控制台中重现。
- 注释 2:仅可通过变量 "name". 重现
当您在全局范围内声明变量时,正如您在此处所做的那样,它们实际上作为属性包含在全局对象中,在本例中为 window
。 window.name
is something that already exists,且只能设置为字符串。
当你这样做时:
var name = true;
实际上是将 window.name
设置为 "true"
。与 name = false
相同 - 将其设置为 "false"
。由于 "false"
是 "truthy",因此 while
循环永远不会退出。