<p>This page tests issues of scope with nested functions.</p> <pre id="console"></pre> <script> function log(s) { document.getElementById("console").appendChild(document.createTextNode(s + "\n")); } function shouldBe(evalA, a, b) { if (evalA === b) { log("PASS: " + a + " should be " + b + " and is."); } else { log("FAIL: " + a + " should be " + b + " but instead is " + evalA + "."); } } if (window.layoutTestController) layoutTestController.dumpAsText(); log("Before parsing f:"); log("-----"); shouldBe(typeof f, "typeof f", "function"); shouldBe(typeof f.f1, "typeof f.f1", "undefined"); function f(x) { function f1() { log("\nIn call to f:"); log("-----"); shouldBe(typeof f, "typeof f", "function"); shouldBe(typeof f1, "typeof f1", "function"); shouldBe(typeof f.f1, "typeof f.f1", "undefined"); shouldBe(typeof x, "typeof x", "number"); shouldBe(typeof y, "typeof y", "undefined"); } f1(); } f.y = 1; log("\nAfter parsing f, but before calling f:"); log("-----"); shouldBe(typeof f, "typeof f", "function"); shouldBe(typeof f.f1, "typeof f.f1", "undefined"); f(1); </script>