2016-01-28 51 views
5
<script type="text/javascript"> 
    alert(a); 
</script> 

控制台日志显示: “未捕获的ReferenceError:未定义”;异“?警报(A)'和 '' 警报(A); VAR一个= 1;在javascript ''

<script type="text/javascript"> 
    alert(a); 
    var a = 1; 
</script> 

在浏览中部,日志显示:“未定义”

如何在JS这个代码运行,是什么原因导致这个代码这种差异

+7

[变量提升](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/var#var_hoisting) – Tushar

+0

第二种情况'var a = 1;'如果您将在alert后声明变量发生未定义错误 –

+0

有错字应该警惕(a)不改变(a) – brk

回答

7

<script type="text/javascript"> 
    alert(a); 
    var a = 1; 
</script> 

var a ;被提升到顶部,并且变得

<script type="text/javascript"> 
    var a; 
    alert(a); 
    a = 1; 
</script> 

所以由时间a被提醒,它是undefined

在此代码

<script type="text/javascript"> 
    alert(a); 
</script> 

一个未在规定所有,所以它给了一个错误"Uncaught ReferenceError: a is not defined"