这个for-loop应该做什么?

Pet*_*son 1 javascript loops for-loop

我一直在跋涉一些Javascript代码并遇到了这个循环

for (var w = window; w.window === window.window.window; w = w.window) {
    w.w = w.prompt("Enter password");
    if (w.w === "swordfish") break;
    w.alert("Incorrect password.");
}
w.alert("Welcome, authenticated user!");
Run Code Online (Sandbox Code Playgroud)

这段代码对我来说没有任何意义.世界上到底发生了什么,它是如何运作的?

Rob*_*b W 7

window总是等于window.window....window,所以循环永远不会结束,除非密码是正确的.

一个for(;;)循环具有以下特征:

for (init; test; increment);
Run Code Online (Sandbox Code Playgroud)

它一直持续到test假.由于window === window始终为true,因此循环会一直运行,直到break遇到为止.澄清,w总是指window.

  • +1,但你没有解释我认为OP最有可能丢失的部分,即在HTML环境中,`window`是全局对象,因此所有全局变量实际上都是`window`的属性.例如,`window.alert`与`alert`相同,`window.window`和`window.window.window`都与`window`相同. (4认同)