javascript中"alert(a)"和"alert(a); var a = 1;''之间的区别?

duk*_*god 5 html javascript

<script type="text/javascript">
    alert(a);
</script>
Run Code Online (Sandbox Code Playgroud)

控制台日志显示:"未捕获的ReferenceError:a未定义";

<script type="text/javascript">
    alert(a);
    var a = 1;
</script>
Run Code Online (Sandbox Code Playgroud)

在浏览的中间,日志显示:"undefined"

这段代码是如何在js中运行的,以及导致这种差异的原因

gur*_*372 7

在这段代码中

<script type="text/javascript">
    alert(a);
    var a = 1;
</script>
Run Code Online (Sandbox Code Playgroud)

var a ; 被悬挂到顶部,它变成了

<script type="text/javascript">
    var a;
    alert(a);
    a = 1;
</script>
Run Code Online (Sandbox Code Playgroud)

所以当a被警告时,它是undefined

在这段代码中

<script type="text/javascript">
    alert(a);
</script>
Run Code Online (Sandbox Code Playgroud)

a根本没有定义,所以它给出了一个错误 "Uncaught ReferenceError: a is not defined"