这个for循环应该做什么

What is this for-loop supposed to do?

本文关键字:什么 for 循环 这个      更新时间:2023-09-26

我在一些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!");

这个代码对我来说没有任何意义。这里到底发生了什么,它是如何工作的?

window始终等于window.window....window,因此循环永远不会结束,除非密码正确。

for(;;)循环具有以下签名:

for (init; test; increment);

它一直持续到test为假。由于window === window始终为真,因此循环将继续运行,直到遇到break为止。为了澄清,w总是指window

除非您提供密码"箭鱼",否则警报框会无限期弹出!

如果你遇到这样的脚本,只需禁用JavaScript并查看Source,获取密码(记下它),启用JS,再次运行脚本并输入密码,看看等待什么;)

您需要看到前一行才能完全理解此代码:

var window = (function () { return this; })();