Javascript函数范围

use*_*946 1 javascript scope function public

为什么警告打印2在下面的例子中?var a未知函数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>
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 5

JavaScript函数继承其父级的范围.内部变量影响具有相同名称的父范围变量.

进一步阅读.