【问题标题】:javascript variable scope related hoistringjavascript变量范围相关的提升
【发布时间】:2017-12-15 05:57:37
【问题描述】:

这是我的问题。

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

这段代码的输出是

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

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

【问题讨论】:

  • 问题是什么?你已经知道为什么会这样了。
  • 我无法重现该问题。
  • 完全无法重现。

标签: javascript scope hoisting


【解决方案1】:

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>

【讨论】:

  • @SurenSrapyan 你是对的。我的 window.name 值已更改。
猜你喜欢
  • 1970-01-01
  • 2017-07-18
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 2015-09-17
  • 2020-02-07
  • 2012-12-23
相关资源
最近更新 更多