JavaScript 函数作用域

发布于 2024-12-04 05:38:46 字数 685 浏览 2 评论 0原文

为什么警报在下面的示例中打印 2? var a 的功能未知...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title>Test Doc</title>
    <script type="text/javascript">
        var a = 1;
        function f() {
            var a = 2;
            function n() {
                alert(a);
            }
            n();
        }
        f();
    </script>
</head>

<body>


</body>
</html>

Why does the alert print 2 in the below example? var a is unknown to function n...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title>Test Doc</title>
    <script type="text/javascript">
        var a = 1;
        function f() {
            var a = 2;
            function n() {
                alert(a);
            }
            n();
        }
        f();
    </script>
</head>

<body>


</body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

叹倦 2024-12-11 05:38:46

JavaScript 函数继承其父函数的作用域。内部变量隐藏同名的父作用域变量。

进一步阅读

JavaScript functions inherit their parent's scope. Inner variables shadow parent scope variables with the same name.

Further Reading.

时光清浅 2024-12-11 05:38:46

它会提醒“2”。

在这里测试您的 JavaScript 示例:jsfiddle.net

您的示例粘贴在此处:你的 javascript 示例

为什么 n() 不知道 var a

It would alert "2".

Test your javascript examples here : jsfiddle.net

Your example is pasted here : your javascript example

And why the heck is var a unknown to n() ??

﹏半生如梦愿梦如真 2024-12-11 05:38:46

a 被标记为全局变量,并赋予值为 1。 a 也在函数 f() 内声明,并赋予值为 1 2. 函数n() 在函数f() 内部声明,并在对“内部”a 赋值后调用。

因此,当调用n时,标识符a将从n的范围内解析。作用域链上第一个具有 a 属性的变量对象是在 f 中声明的变量对象,因此返回其值。

a is decalred as a global variable and given a value of 1. a is also declared inside the function f() and given a value of 2. Function n() is declared inside the function f() and called after the assignment to the "inner" a.

So when n is called, the identifier a will be resolved from the scope of n. The first variable object on the scope chain with an a property is the one declared in f, so its value is returned.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文