javascript变量范围相关的hoistring

时间:2017-12-15 05:57:38

标签: javascript scope hoisting

这是我的问题。

<html>
<head>
</head>
<body>
    <script>
        var name;
        console.log(name);
        name = "abcdefg";
        console.log(name);
    </script>
</body>
</html>

此代码的输出是

enter image description here

我知道第一个日志必须说未定义因为提升。

我已经尝试过刷新和删除缓存,并且不明白为什么。请帮帮我。

1 个答案:

答案 0 :(得分:2)

namewindow的保留变量名。因此,当您首次访问name而不覆盖它(var name不覆盖)时,您将获得全局属性window.name

在第一个console.log的情况下,您可能会得到不同的undefined,但不等于abcdefg

<html>
<head>
</head>
<body>
    <script>
        var name;
        console.log(name);
        name = "abcdefg";
        console.log(name);
        console.log(window.name);
    </script>
</body>
</html>